Оператори порівняння, Посібник з PHP
Оператори порівняння, як це видно з їхньої назви, дозволяють порівнювати між собою два значення. Можливо, вам буде цікаво також ознайомитися з розділом Порівняння типів, в якому наведено велику кількість відповідних прикладів.
У випадку, якщо ви порівнюєте число з рядком або два рядки, що містять числа, кожен рядок буде перетворено на число, і вони будуть порівнюватися як числа. Ці правила також поширюються оператором switch. Перетворення типів немає при використанні === чи !== оскільки у разі крім самих значень порівнюються ще й типи.
true var_dump ("1" == "01"); // 1 == 1 -> true var_dump ("10" == "1e1"); // 10 == 10 -> true var_dump ( 100 == "1e2"); // 100 == 100 -> true
switch ("a") case 0: echo "0"; break; case "a" // Ця гілка ніколи не буде досягнута, так як "a" вже зіставлено з 0 echo "a"; break; > ?>
Для різних типів порівняння відбувається відповідно до наступної таблиці (по порядку).
Приклад #1 Порівняння бульова/null
Приклад #2 Алгоритм порівняння звичайних масивів
Порівняння чисел з плаваючою точкою
Через особливе внутрішнє уявлення float, не потрібно перевіряти на рівність два float-числа.
Для більш детальної інформації дивіться документацію типу float .
Тернарний оператор
Ще одним умовним оператором є тернарний оператор "?:".
Приклад #3 Призначення за промовчанням
Починаючи з версії PHP 5.3, також стало можливим не писати середню частину тернарного оператора. Вираз expr1?: expr3 повертає expr1 якщо expr1 має значенняTRUE і expr3 в іншому випадку.
Зауваження : Будь ласка, врахуйте, що тернарний оператор є виразом і трактується не як змінна, а як результат виразу. Це важливо знати, якщо ви хочете повернути змінну за посиланням. Вираз return $var == 42? $a : $b; не працюватиме у функції, що повертає значення за посиланням, а в пізніших версіях PHP також буде видано попередження.
Зауваження :
Рекомендується уникати "нагромадження" тернарних виразів. Поведінка PHP неочевидна при використанні кількох тернарних операторів в одному виразі:
Приклад #4 Неочевидна поведінка тернарного оператора