php пустой или пустой?


Answers

Как показано в следующей таблице, empty($foo) эквивалентен $foo==null а is_null($foo) имеет ту же функцию от $foo===null . В таблице также показаны некоторые сложные значения для null сравнения. (φ обозначает неинициализированные переменные).

Я никогда не использую функции empty() и is_null() . Использование простого сравнения менее неоднозначно, быстрее и чище.

         empty    is_null 
         ==null  ===null  isset   array_key_exists
      ϕ |   T   |   T   |   F   |   F   
   null |   T   |   T   |   F   |   T   
     "" |   T   |   F   |   T   |   T   
     [] |   T   |   F   |   T   |   T
      0 |   T   |   F   |   T   |   T      
  false |   T   |   F   |   T   |   T   
   true |   F   |   F   |   T   |   T   
      1 |   F   |   F   |   T   |   T   
     \0 |   F   |   F   |   T   |   T   
Question

У меня есть странный вопрос относительно PHP и NULL , см. Следующий код:

  $a = '';
  if($a == NULL) {
      echo 'is null';
  }

Почему я вижу нулевое значение ? если $a пуст !, это ошибка? Спасибо.




Нет, это не ошибка. Посмотрите на сравнение Loose с таблицей == (вторая таблица), которая показывает результат сравнения каждого значения в первом столбце со значениями в других столбцах:

    TRUE    FALSE   1       0       -1      "1"     "0"     "-1"    NULL    array() "php"   ""

    [...]    

""  FALSE   TRUE    FALSE   TRUE    FALSE   FALSE   FALSE   FALSE   TRUE    FALSE   FALSE   TRUE

Там вы можете видеть, что пустая строка "" по сравнению с false , 0 , NULL или "" даст true.

Вместо этого вы можете использовать is_null [docs] или строгое сравнение (третья таблица).




Если вы используете == , php обрабатывает пустую строку или массив как null . Чтобы сделать различие между null и empty , используйте === или is_null . Так:

if($a === NULL) или if(is_null($a))




Links



Tags

php php   null