Code объяснит больше:
$var = 0;
if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}
Результат возвращает "Свое пустое". Я думал пустой (), проверит, установил ли я уже переменную и имею значение внутри. Почему это возвращает "Свое пустое"??
Следующие элементы считаются пустыми:
- "" (пустая строка)
- 0 (0 в виде целого числа)
- 0,0 (0 в виде числа с плавающей запятой)
- «0» (0 в виде строки)
- NULL
- FALSE
- array () (пустой массив)
- var $ var; (объявленная переменная, но без значения в классе)
Обратите внимание, что это точно такой же список, что и для приведения к логическому false
. пусто
просто ! Isset ($ var) || ! $ var
. Попробуйте вместо этого isset
.
Из руководства: Возвращает FALSE, если var имеет непустое и ненулевое значение.
Следующие элементы считаются пустыми:
Подробнее: http://php.net/manual/en/function.empty.php
Следующие элементы считаются пустыми:
В вашем случае $ var
равно 0
, поэтому empty ($ var)
вернет true
, вы отрицаете результат перед его тестированием, поэтому блок else будет работать с выдачей « Its empty
» в качестве вывода .
empty()
возвращает true для всего, что оценивается в FALSE
, на самом деле это замаскированное "not" (!
). Думаю, вы имели в виду isset()
С лингвистической точки зрения пустой имеет значение без значения . Как и другие говорили, вам придется использовать isset ()
, чтобы проверить, определена ли переменная, что вы и делаете.
Мне интересно, почему никто не предложил чрезвычайно удобную Таблицу сравнения типов. Она отвечает на все вопросы об общих функциях и операторах сравнения.
Фрагмент:
Expression | empty()
----------------+--------
$x = ""; | true
$x = null | true
var $x; | true
$x is undefined | true
$x = array(); | true
$x = false; | true
$x = true; | false
$x = 1; | false
$x = 42; | false
$x = 0; | true
$x = -1; | false
$x = "1"; | false
$x = "0"; | true
$x = "-1"; | false
$x = "php"; | false
$x = "true"; | false
$x = "false"; | false
Наряду с другими шпаргалками, я всегда держу распечатку этой таблицы на своем столе на случай, если я не уверен