В php, 0 рассматривается как пустой?

Code объяснит больше:

$var = 0;

if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}

Результат возвращает "Свое пустое". Я думал пустой (), проверит, установил ли я уже переменную и имею значение внутри. Почему это возвращает "Свое пустое"??

128
задан mysqllearner 8 February 2010 в 09:16
поделиться

6 ответов

http://php.net/empty

Следующие элементы считаются пустыми:

  • "" (пустая строка)
  • 0 (0 в виде целого числа)
  • 0,0 (0 в виде числа с плавающей запятой)
  • «0» (0 в виде строки)
  • NULL
  • FALSE
  • array () (пустой массив)
  • var $ var; (объявленная переменная, но без значения в классе)

Обратите внимание, что это точно такой же список, что и для приведения к логическому false . пусто просто ! Isset ($ var) || ! $ var . Попробуйте вместо этого isset .

169
ответ дан 24 November 2019 в 00:35
поделиться

Из руководства: Возвращает FALSE, если var имеет непустое и ненулевое значение.

Следующие элементы считаются пустыми:

  • «» (пустая строка)
  • 0 (0 как целое число)
  • «0» (0 как строка) NULL
  • FALSE массив () (пустой массив) var
  • $ var; (объявленная переменная, но без значения в классе)

Подробнее: http://php.net/manual/en/function.empty.php

1
ответ дан 24 November 2019 в 00:35
поделиться

Следующие элементы считаются пустыми:

  • "" (пустая строка)
  • 0 (0 как целое число)
  • «0» (0 в виде строки)
  • NULL
  • FALSE
  • array () (пустой массив)
  • var $ var; (переменная объявлена, но без значения в классе)

Из Руководство по PHP

В вашем случае $ var равно 0 , поэтому empty ($ var) вернет true , вы отрицаете результат перед его тестированием, поэтому блок else будет работать с выдачей « Its empty » в качестве вывода .

1
ответ дан 24 November 2019 в 00:35
поделиться

empty() возвращает true для всего, что оценивается в FALSE, на самом деле это замаскированное "not" (! ). Думаю, вы имели в виду isset()

4
ответ дан 24 November 2019 в 00:35
поделиться

С лингвистической точки зрения пустой имеет значение без значения . Как и другие говорили, вам придется использовать isset () , чтобы проверить, определена ли переменная, что вы и делаете.

6
ответ дан 24 November 2019 в 00:35
поделиться

Мне интересно, почему никто не предложил чрезвычайно удобную Таблицу сравнения типов. Она отвечает на все вопросы об общих функциях и операторах сравнения.

Фрагмент:

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   

Наряду с другими шпаргалками, я всегда держу распечатку этой таблицы на своем столе на случай, если я не уверен

73
ответ дан 24 November 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: