Возможный дубликат:
Ссылка. Что означает этот символ в PHP?
Путайтесь с пустым, isset,! Empty,! Isset
В PHP какая разница между:
if(!isset) if(isset)
То же самое с if(!empty)
и if(empty)
?
Что это "!" символ означает?
!
является логическим отрицанием или оператором NOT
. Это меняет смысл логического теста.
То есть:
if(isset)
делает что-то, если isset
логичен True
. if(!isset)
делает что-то, если isset
логичен False
. Подробнее о операторах (логических и других типах) в документации PHP. Посмотри !
там, чтобы цементировать свое понимание того, что он делает. Пока вы там, посмотрите другие логические операторы:
&&
логическое И ||
логический ИЛИ xor
логический EXCLUSIVE-OR Которые также обычно используются в логических утверждениях.
!
символ является логическим оператором «не». Он инвертирует логическое значение выражения.
Если у вас есть выражение, которое имеет значение TRUE
, префикс его !
заставляет его оценивать FALSE
и наоборот.
$test = 'value'; var_dump(isset($test)); // TRUE var_dump(!isset($test)); // FALSE
isset()
возвращает TRUE
если заданная переменная определена в текущей области с ненулевым значением.
empty()
возвращает TRUE
если заданная переменная не определена в текущей области, или если она определена со значением, которое считается «пустым». Эти значения:
NULL // NULL value 0 // Integer/float zero '' // Empty string '0' // String '0' FALSE // Boolean FALSE array() // empty array
В зависимости от версии PHP объект, не имеющий свойств, также может считаться пустым.
Результатом этого является то, что isset()
и empty()
почти дополняют друг друга (они возвращают противоположные результаты), но не совсем, поскольку empty()
выполняет дополнительную проверку значения переменной, isset()
просто проверяет, определено.
Рассмотрим следующий пример:
var_dump(isset($test)); // FALSE var_dump(empty($test)); // TRUE $test = ''; var_dump(isset($test)); // TRUE var_dump(empty($test)); // TRUE $test = 'value'; var_dump(isset($test)); // TRUE var_dump(empty($test)); // FALSE
$var = 0; // Evaluates to true because $var is empty if (empty($var)) { echo '$var is either 0, empty, or not set at all'; } // Evaluates as true because $var is set if (isset($var)) { echo '$var is set even though it is empty'; }
Редактировать:
вот тестовый пример для вас:
$p = false; echo isset($p) ? '$p is setted : ' : '$p is not setted : '; echo empty($p) ? '$p is empty' : '$p is not empty'; echo "<BR>";
$ p задано: $ p пусто