Согласно документации php, следующие выражения возвращают true при вызове empty($var)
Я нашел, как «решить» проблему, используя empty($var) && $var != 0
но почему разработчики php сделали это? я думаю, что это смешно, suppouse у вас есть этот код:
if (empty($_POST["X"])) { doSomething(); }
я думаю, что "0"
не пуст, пустая – это когда ничего нет !!! возможно, лучше использовать
if (isset($x) && x != "") {//for strings doSomething(); }
empty
грубые зеркала Выбор PHP значений FALSE-y :
При преобразовании в boolean следующие значения считаются FALSE:
- сама логическая ЛОЖЬ
- целое число 0 (ноль)
- поплавок 0.0 (ноль)
- пустая строка и строка «0»,
- массив с нулевыми элементами
- …
Насколько PHP работает таким образом, или почему пустая функция следовала примеру – ну, это Just The Way Is Is.
Рассмотрим использование strlen($x)
(это особенно хорошо подходит для таких источников, как $_POST
которые являются строковыми значениями), чтобы определить, существует ли непустая строка, включая «0».
Конечная форма, которую я использую, будет тогда: isset($x) && strlen($x)
, с любой дополнительной обработкой, используемой, зная, что есть некоторые данные для публикации.