Встретил на одном из зарубежных форумов вопрос от новичка о принципиальной разнице между методами isset(), is_null() и empty(). И понял, что сам конкретного ответа дать не могу — все на интуитивном уровне.
Поэтому решил сделать небольшую заметку и, конечно же, запостить ее в Блоге.
Итак, ниже приведена сравнительная таблица соответствия функции с определенными константами.
Список констант:
$undefined — простая, не объявленная в коде переменная
null — просто объявлена переменная. Никакого значения ей присвоено не было
0 — собственно, ноль
false — простое булево значение ЛОЖЬ
123 — простое числовое значение (типа int или float)
«» — строка (пустая)
В колонке «Функция» == и === означают то, что некое значение сравнивается с false. Например, для колонки 123 происходит выполнение операции: false == 123.
| Функция | $undefined | NULL | 0 | false | 353 | «» |
|---|---|---|---|---|---|---|
| isset() | false | false | true | true | true | true |
| empty() | true | true | true | true | false | true |
| is_null() | true | true | false | false | false | false |
| == | true | true | true | true | false | true |
| === | false | false | false | false | true | false |
Результаты довольно интерессные. Как по мне php тут даже у JS не выигрывает. Там, как по мне, на порядок прозрачнее реализовано.