A gettype() függvény használata

A változó típusának meghatározása.


Változó érték nélküli, akkor típusa: NULL

Változó értéke pozitív egész szám, pl: 3, akkor típusa: integer
Változó értéke negatív egész szám, pl: -3, akkor típusa: integer

Változó értéke pozitív és tizedes számot is tartalmaz , pl: 3.235, akkor típusa: double
Változó értéke negatív és tizedes számot is tartalmaz , pl: -3.235, akkor típusa: double

Változó értéke karakterlánc, pl: harom, akkor típusa: string
Változó értéke karakterlánc, pl: harom333, akkor típusa: string
Változó értéke karakterlánc, pl: 333harom, akkor típusa: string
Változó értéke karakterlánc , pl: harom3.235, akkor típusa: string
Változó értéke karakterlánc, pl: h3h2h5, akkor típusa: string

Változó értéke logikai, pl: true, akkor típusa: boolean
Változó értéke logikai, pl: false, akkor típusa: boolean



<?php
// Értékadás nélküli deklaráció, NULL
$teszt=NULL;
print ("Változó érték nélküli, akkor típusa: ".gettype( $teszt ). "<br />"); 

// Értéke egészszám.	
$teszt = 3;
print ("Változó értéke pozitív egész szám, pl: 3, akkor típusa: ".gettype( $teszt ). "<br />");
$teszt = -3;
print ("Változó értéke negatív egész szám, pl: -3, akkor típusa: ".gettype( $teszt ). "<br />"); 

// Értéke double szám.
$teszt = 3.235;
print ("Változó értéke pozitív és tizedes számot is tartalmaz , pl: 3.235, akkor típusa: ".gettype( $teszt ). "<br />"); 
$teszt = -3.235;
print ("Változó értéke negatív és tizedes számot is tartalmaz , pl: -3.235, akkor típusa: ".gettype( $teszt ). "<br />");

// Értéke karakterlánc.
$teszt = "harom";
print ("Változó értéke karakterlánc, pl: harom, akkor típusa: ".gettype( $teszt ). "<br />");
$teszt = "harom333";
print ("Változó értéke karakterlánc, pl: harom333, akkor típusa:  ".gettype( $teszt ). "<br />");
$teszt = "333harom";
print ("Változó értéke karakterlánc, pl: 333harom, akkor típusa:  ".gettype( $teszt ). "<br />");
$teszt = "harom3.235";
print ("Változó értéke karakterlánc, pl: harom3.235, akkor típusa:  ".gettype( $teszt ). "<br />");
$teszt = "h3h2h5";
print ("Változó értéke karakterlánc, pl: h3h2h5, akkor típusa:  ".gettype( $teszt ). "<br />");

// Értéke logikai.
$teszt = true;
print ("Változó értéke logikai, pl:  true, akkor típusa: ".gettype( $teszt ). "<br />");
$teszt = false;
print ("Változó értéke logikai, pl:  false, akkor típusa: ".gettype( $teszt ). "<br />");

?>




Összegezve a gettype() függvény:




A PHP gyenge típusossága az egyik leggyakoribb hibaforrás.

A PHP nyelvre jellemző, az ún. Type Juggling ami lehetővé teszi, hogy a változó típusát a környezete határozza meg, melyben használjuk.



Ezt adtuk meg: $valtozo = ”k”;          Programunk ezt írja ki= k          Típusa ez lesz: string
Ezt adtuk meg: $valtozo += 5;          Programunk ezt írja ki= 5          Típusa ez lesz: integer      ( PHP Figyelmeztetés: Nem numerikus érték található.)
Ezt adtuk meg: $valtozo = k;            Programunk ezt írja ki= k          Típusa ez lesz: integer       ( PHP Figyelmeztetés: Nem definiált k konstans - feltételezzük, hogy „k” )
Ezt adtuk meg: $valtozo += 5;          Programunk ezt írja ki= 10          Típusa ez lesz: integer
Ezt adtuk meg: $valtozo = ”1”;          Programunk ezt írja ki= 1          Típusa ez lesz: string
Ezt adtuk meg: $valtozo += 5;          Programunk ezt írja ki= 6          Típusa ez lesz: integer       ( Ősszeadja előző string és most meghatározott integer értéket. "1" + 5 = 6 )
Ezt adtuk meg: $valtozo = 1;            Programunk ezt írja ki= 1          Típusa ez lesz: integer
Ezt adtuk meg: $valtozo += 5;          Programunk ezt írja ki= 6          Típusa ez lesz: integer                                               ( 1 + 5 = 6 )
Ezt adtuk meg: $valtozo = $valtozo + 3.3;                   Programunk ezt írja ki= 9.3         Típusa ez lesz: double                  ( 6 + 3,3 = 9,3 )
Ezt adtuk meg: $valtozo =  5 + ”10 Nagy Elefánt”;       Programunk ezt írja ki= 15          Típusa ez lesz: integer
Ezt adtuk meg: $valtozo =  5 + ”Nagy Elefánt 10”;        Programunk ezt írja ki= 5           Típusa ez lesz: integer      ( PHP Figyelmeztetés: Nem numerikus érték található.)


Tömbre való átalakítás, jelenleg nem elérhető.

Ezt adtuk meg: $a = ”L”;                 Programunk ezt írja ki= L                 Típusa ez lesz,  gettype($a) = string
Ezt adtuk meg: $a[0] = ”B”;             Programunk ezt írja ki= B                Típusa ez lesz,  gettype($a[0]) = string

Figyeljük meg a következő példákat, string értéknél, betűt lecserél vagy elvesz.

Ezt adtuk meg: $a = ”Le”;               Programunk ezt írja ki, $a = Le               Típusa ez lesz,  gettype($a) = string
Ezt adtuk meg: $a[0] = ”B”;             Programunk ezt írja ki, $a[0] = B              Típusa ez lesz,  gettype($a[0]) = string
Ezt adtuk meg: $a = ”Letesz”;         Programunk ezt írja ki, $a = Letesz         Típusa ez lesz,  gettype($a) = string
Ezt adtuk meg: $a[0] = ”Bel”;          Programunk ezt írja ki, $a[0] = B         Típusa ez lesz,  gettype($a[0]) = string












Nézzük meg gyakorlatban, hogy is működik.

A gettype() függvény használata, olyan programokban hasznos, ahol az if feltételek meghatározása, nagyon bonyolult lenne.

Következő példánkban, egy darabáru értékesítéssel foglalkozó vállalkozáshoz érkező adat feldolgozása kerül bemutatásra.

Ahhoz, hogy programunk a fent meghatározott feltételeket ellenőrizni tudja, nagyon sok feltételt kellene beírnunk, mert nem
tudhatjuk előre, hogy mennyit fognak rendelni, és megrendelésnél milyen értéket írnak be.
Ebbe segít a gettype() függvény, mely a megrendelésnél beírt érték hatására történő változásból, egy lépésben kiszűri, hogy
egészszámú "integer", vagy nem egészszámú "double", a változás.



Fent leírtak teszteléséhez, készítünk egy kis űrlapot.
Az űrlapmezőbe beírt adatot, továbbítjuk a feldolgozóprogramunknak, majd az eredményt megjeleníti.



Rendelt mennyiség:





<a name="gettype" id="gettype"></a> <------- Ide küldi programunk, a választ.

A php programunk megírása.

<?php
if (isset($_POST['elkuldott'])) 
 {
	echo "<form method='POST' action='gettype_fv.php'>";
		
$teszt= $_POST['adat'];
$keszlet=1000;
$marad=$keszlet-$teszt;
$valtozas= gettype($marad);

if($valtozas==integer and $teszt>0 and $marad>=0)
		{
		print ("<b>Megrendelt tétel: kiadható</b><br />"); 
		}
	
   else 
   print ("Megrendelt tétel:<br />Csak egészszám lehet!<br />Nem lehet NULLA<br />Jelenleg rendelhető= ".$keszlet." db.");

	echo "</form>";   
 }
	
?>
<hr>
		
<form method="POST" action="gettype_fv.php#gettype">
<input type="hidden" name="elkuldott" value="true">
<p><b>Rendelt mennyiség:</b> <input type="text" name="adat" ></p>

<p><input type="submit" value="Érték elküldése"></p>
</form>