Оператори порівняння, Посібник з 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 Неочевидна поведінка тернарного оператора