Что означает восклицательный знак в PHP?

Возможный дубликат:
Ссылка. Что означает этот символ в 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 пусто