Az összehasonlító operátorok, mint nevük is sugallja, két érték összehasonlítására szolgálnak. Érdekesek lehetnek még a típus összehasonlítási táblázat, mivel mutat néhány példát különböző típusok összehasonlítására.
Táblázat 15-4. Összehasonlító operátorok
Példa | Név | Eredmény |
---|---|---|
$a == $b | Egyenlő | Igaz (TRUE), ha $a és $b értéke egyenlő |
$a === $b | Azonos | Igaz (TRUE), ha $a és $b értéke egyenlő, és azonos típusúak (PHP 4-től) |
$a != $b | Nem egyenlő | Igaz (TRUE), ha $a és $b értékei különbözők |
$a <> $b | Nem egyenlő | Igaz (TRUE), ha $a és $b értékei különbözők |
$a !== $b | Nem azonos | Igaz (TRUE), ha $a és $b értékei vagy típusai különbözők (csak PHP 4-től) |
$a < $b | Kisebb mint | Igaz (TRUE), ha $a szigorúan kisebb, mint $b |
$a > $b | Nagyobb mint | Igaz (TRUE), ha $a szigorúan nagyobb, mint $b |
$a <= $b | Kisebb, vagy egyenlő | Igaz (TRUE), ha $a kisebb, vagy egyenlő, mint $b |
$a >= $b | Nagyobb, vagy egyenlő | Igaz (TRUE), ha $a nagyobb, vagy egyenlő, mint $b |
Ha egészet hasonlítasz stringgel, a string előbb számmá konvertálódik. Ha két számot reprezentáló stringet hasonlítasz össze, egész számokként lesznek összehasonlítva. Ezek a szabályok a switch utasítás esetén is érvényesek.
<?php |
Ha az operandusok típusa különböző, akkor az összehasonlítás az alábbi táblázat alapján történik (sorrendben).
Táblázat 15-5. Különböző típusú összehasonlítása
Első operandus típusa | Második operandus típusa | Eredmény |
---|---|---|
null vagy string | string | NULL konvertálása ""-é, numerikus vagy lexikális összehasonlítás |
bool vagy null | bármi | Konvertálás bool-lá, FALSE < TRUE |
objektum | objektum | A beépített osztályok definiálhatják saját összehasonlítási módot, különböző osztályok összehasonlíthatatlanok, azonos osztályok esetén a tulajdonságokat a tömbökhöz hasonló módon hasonlítja össze |
string, erőforrás vagy numerikus | string, erőforrás vagy numerikus | A stringek és erőforr'sok átalakulnak számokká, majd a szokásos matematikai összehasonlítás |
tömb | tömb | A kisebb elemszámú tömb a kisebb, ha az első operandus kulcsa nem létezik a második operandusban, akkor a tömbök összehasonlíthatatlanok, egyébként a értékről értékre történő összehasonlítás következik (lásd a lenti példát) |
tömb | bármi | A tömb mindig nagyobb |
objektum | bármi | Az objektum mindig nagyobb |
Lásd még: strcasecmp(), strcmp(), tömboperátorok, típusok.
Egy másik feltételes operátor a "?:" (ternáris) operátor.
Megjegyzés: A ternáris operátor egy kifejezést alkot, ezért kiértékelése nem egy változót ad, hanem egy értéket. Ez azért fontos, mert ha egy változót referencia szerint akarsz átadni, és a return $var == 42 ? $a : $b; alakot használod, a referencia szerinti átadás nem fog működni és az újabb PHP verziók esetén figyelmeztetést is kapsz.