PHP kézikönyv
Előző
Következő
A kifejezések a PHP legfontosabb építőkövei.
A PHP-ban majdnem minden, amit leírsz, egy kifejezés.
A lehető legegyszerűbb és mégis pontos definíciója a kifejezésnek: "mindaz, amelynek értéke van".
A kifejezések legalapvetőbb formái az állandók és a változók.
Az "$a = 5" az '5 '-öt az $a változóhoz rendeli.
Az '5'-nek nyilván 5 az értéke, vagyis más szavakkal az '5' olyan kifejezés, melynek értéke 5 (itt az '5 'egy egész típusú állandó).
Ez után a hozzárendelés után $a értéke 5 kell legyen, sőt, $b = $a esetén az eredménynek azonosnak kell lennie azzal, mint $b = 5 esetén.
Másképp megfogalmazva az $a olyan kifejezés, amelynek értéke 5.
Ha minden jól megy, pontosan ez fog történni.
Kissé bonyolultabb példák a kifejezésekre a függvények.
Például tekintsük az alábbi függvényt:
function ize() {return 5;}
Megelőlegezzük ,hogy nem idegen Tőled a függvények koncepciója - ha nem így lenne, akkor olvasd el a függvényekről szóló fejezetet.
Amint az elvárható, a $c = foo() lényegében azonos $c = 5 beírásával.
A függvények olyan kifejezések, amelyeknek az értéke a visszatérési értékük.
Mivel foo() 5-tel tér vissza, a 'foo() 'kifejezés értéke 5.
Általában a függvények nem arra használatosak, hogy egy bedrótozott számmal térjenek vissza, hanem valamilyen számolt származtatott értékkel.
Természetesen a változóknak a PHP-ben nem kell egésznek lenniük, és nagyon gyakran nem is azok.
A PHP három féle skalártípust támogat: egész, lebegőpontos és sztring értékeket (skalárnak az számít, amit nem lehet kisebb darabokra bontani, eltérően - például - a tömböktől).
A PHP két nem skalár típust is támogat: a tömb és objektum típust.
Mindegyikükhöz lehet értéket rendelni, és mindegyikük lehet egy függvény visszatérési értéke.
Eddig a PHP / FI 2 használói nem találkoztak semmi különössel.
Mindamellett a PHP továbbfejleszti a kifejezés fogalmát, ahogy azt sok hasonló nyelv teszi.
A PHP egy kifejezés-orientált nyelv, abból a szempontból, hogy majdnem minden kifejezés.
Tekintsük a példát, amivel eddig foglalkoztunk: '$a = 5'.
Látható, hogy két értéket szerepel benne: az egész konstans '5' és $a értéke, amelyet az 5 értékkel frissítettünk.
Az igazság azonban az, hogy még egy érték is van a kifejezésben, a magáé a hozzárendelésé.
A hozzárendelés maga kiértékeli az átadandó értéket, ebben az esetben az 5-öt.
Ez azt jelenti gyakorlatilag, hogy a '$a=5', a hatásától eltekintve egy kifejezés, amelynek az értéke 5.
Ha ezért olyasmit írunk, hogy '$b=($a=5)', akkor az olyasmi, mintha '$a=5; $b=5 ;'-t írtunk volna (a pontosvessző jelöli az állítás végét).
Mivel a hozzárendelés jobbról balra történik, ez írható zárójelek nélkül is: '$b=$a=5'.
A kifejezés-orientáltság másik jó példája az elő - és utónövekményes operátor.
A PHP / FI 2 használóinak és sok más nyelvet használónak ismerős lehet a változó+ + és változó- - jelölés.
Ezek az növelő és csökkentő operátorok.
A PHP / FI 2-ben a '$a++'-nek nincs értéke (mert nem kifejezés), és ezért nem is lehet semmihez hozzárendelni, vagy valamire használni.
A PHP kiterjesztette az inkrementálás / dekrementálás lehetőségeit azzal, hogy ezeket is kifejezésekké alakította, mint ahogyan a C nyelvben is megtették.
A PHP-ben a C nyelvhez hasonlóan kétféle növekményes operátor van: elő - és utó( növekményes).
Mindkettő megnöveli a változó értékét, tehát a változó szempontjából nézve nincs különbség, a kifejezés értékében annál inkább.
A '++$változó' formájú előnövekményes a megnövelt értéket adja vissza. (A PHP először növeli a változót, majd kiértékeli, innen jön az 'elő').
A '$változó++' alakú utónövekményes a változó eredeti értéket adja. (A PHP először kiértékeli, aztán növeli a változót, innen jön az 'utó'). [A csökkentő operátorokkal értelemszerűen ugyanez a helyzet.]
A kifejezések egy gyakori típusai az összehasonlító kifejezések.
Ezek a kifejezések 0-t vagy 1-et adnak, annak megfelelően, hogy hamisak (FALSE), vagy igazak (TRUE) (ebben a sorrendben).
A PHP támogatja a (nagyobb), = (nagyobb, vagy egyenlő), == (egyenlő), != (nem egyenlő), (kisebb) és a = (kisebb, vagy egyenlő) operátorokat.
Ezeket a kifejezéseket általában feltételes kifejezésekben szokták használni.
Ilyen pl. az if kifejezés.
Az utolsó példa, amivel itt foglalkozunk, a kombinált hozzárendelés-operátor kifejezés.
Már tudhatod, hogy ha $a-t eggyel szeretnéd megnövelni, akkor egyszerűen írhatod, hogy '$a++' vagy '++$a '.
Mi van akkor, hogy ha nem eggyel, hanem 3-mal kell megnövelni?
Lehet háromszor egymás után írni, hogy '$a++', de ez nem valami hatékony és üdvözítő megoldás.
Sokkal jobb gyakorlat az '$a=$a+3' használata.
Ez kiértékeli az $a + 3-at, és hozzárendeli az $a-hoz, amelynek az lesz a végső eredménye, hogy $a értéke megnő hárommal.
A PHP-ben - több más C-szerű nyelvhaz hasonlóan - ennél rövidebb formában is megadható: '$a+=3'.
Ez pontosan azt jelenti, hogy "vedd $a értékét, és adjál hozzá hármat, és írd vissza az eredményt $a-ba".
Amellett, hogy rövidebb és érthetőbb, még gyorsabb is. '$a+=3' értéke, mint egy normál értékadásé a hozzárendelt érték.
Ez persze NEM 3, hanem $a + 3 (hiszen ezt az értéket rendeltük $a-hoz).
Az összes többi kétoperandusú operátort lehet ilyenformán hozzárendelő-operátorként használni, például '$a-=5' (kivon 5-öt $a-ból), '$b*=7 '(megszorozza $b-t 7-tel), stb.
Létezik még egy kifejezés, amely elég különösnek tűnhet, hacsak nem láttad már más nyelvekben: a háromoperandusú feltételes operátor:
$elso? $masodik: $harmadik
$b = $todo == 'növel'? $a+5: $a-5; / / $b $a+5 lesz, ha $todo értéke 'növel '/ / egyébként $b $a-5 lesz
if ($todo == 'növel') $b = $a+5 else $b = $a-5;
Az alábbi példa segíthet az elő - és utónövekményes illetve csökkentő operátorok és kifejezéseik jobb megértésében:
function duplaz( $i) {return $i*2;} $b = $a = 5; / *ötöt rendelünk $a és $b változókhoz * / $c = $a++; / * utónövekményes, $c 5 lesz, mert először $a kiértékelődik, csak aztán nő * / $e = $d = ++$b; / * előnövekményes, $b növelt értéke (6) adódik tovább $d-nek és $e-nek * / / * itt $d és $e hat * / $f = duplaz($d++); / * $d kétszeresének hozzárendelése MIELŐTT inkrementálódik, 2*6 = 12 lesz $f * / $g = duplaz(++$e); / * $e kétszeresének hozzárendelése MIUTÁN inkrementálódik 2*7=14 lesz $g * / $h = $g += 10; / * először $g 10-zel nő, így 24 lesz az értéke, ez adódik tovább $h-nak, az is 24 lesz* /
A fejezet elején azt ígértük, hogy leírjuk a különböző utasítás-típusokat, és ígéretnek megfelelően a kifejezések lehetnek állítások.
Nem minden kifejezés állítás azonban, mert utasítás, amely illeszkedik 'kif' ';' mintára, vagyis a pontosvesszővel folytatodó kifejezés.
A '$b=$a=5; '-ben $a=5 érvényes kifejezés, de nem érvényes utasítás önmagában.
A teljes '$b=$a=5;' már igen.
Még egy említésre méltó dolog a kifejezések igaz értéke.
Sok esetben főleg feltételes elágazásokban és ciklusokban, nem igazán érdekes, hogy a kifejezésnek mi az értéke, csak az, hogy igaz (TRUE) vagy hamis (FALSE).
A TRUE és FALSE konstansok (nevük nem függ a kis - és nagybetűs írásmódtól) a PHP két lehetséges logikai értékei.
Amikor szükséges, a kifejezések automatikusan logikai értékké alakulnak.
Lásd a típuskonverziókról szóló fejezetet további részletekért.
A PHP a kifejezések egy teljes és hatékony megvalósítását biztosítja, és teljes dokumentációja meghaladja e kézikönyv kereteit.
A fenti példák rávilágítanak, hogy mi is az a kifejezés, és hogyan kell létrehozni hasznos kifejezéseket.
A kézikönyv hátralevő részében az expr alatt egy érvényes PHP kifejezést értünk.
Előző
Tartalom
Következő
Előre definiált állandók
Fel
Operátorok