(isset($someValue)

#php #null

#php #null

Вопрос:

Похожи ли два приведенных ниже утверждения?

 if (isset($someValue) amp;amp; $someValue != '') 
  

и

 if(!empty($someValue]))
  

Ответ №1:

Нет, это не одно и то же. Да, они похожи. Первый проверяет, установлено ли ‘someValue’ и не равно ли null плюс, не является ли это пустой строкой. Второе значение равно true, если $_GET['act'] оно не задано или находится в списке переменных, рассматриваемых как пустые и перечисленных на странице документации.

Следующий пример с той же страницы документации должен заполнить все пробелы:

 $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';
}
  

Комментарии:

1. Не могли бы вы привести пример, чтобы доказать, что они не совпадают, т. Е. один true , а другой false ?

2. Я только что сделал. Они каким-то образом противоположны: когда значение не задано или равно null , isset() возвращает false , empty() возвращает true . В случае других пустых значений ( 0 , 0.0 «, ‘ 0 ‘ и т.д.), isset() возвращает true и empty() также возвращает true .

Ответ №2:

Что-то похожее, за исключением 0 значения.

Согласно http://us3.php.net/empty

 $var = "0";
(!empty($var)) === false;
(isset($var) amp;amp; $var!='') === true;
  

Комментарии:

1. Неверно: если $var==="0" , то empty($var)===true . Строка с нулем (‘ 0 ‘) является одним из значений, которые считаются пустыми. Второй пример (isset($var) amp;amp; $var!='')===true правильный (‘ 0 ‘ задан, не равен null и отличается от пустой строки).

2. Вы правы, я забыл восклицательный знак: (!empty($var)) === false;

3. Вид чего? Я не понимаю, что вы имеете в виду на самом деле.

4. Как и другие пытаются объяснить, это похоже. То есть в нескольких конкретных случаях это точно то же самое. Это зависит от того, что вы хотите протестировать. empty() рассматривает строку «0» как пустую строку…

Ответ №3:

Когда вы это пишете, они на самом деле почти противоположны, но я просто предположу, что вы имеете в виду isset($_GET[someValue]) и !empty .

В таком случае нет, они не совпадают. В первой строке вы проверяете наличие пустой строки, но, например, будет передано нулевое значение. Однако нулевое значение считается пустым.

Комментарии:

1. amp; Феникс Большое спасибо! Я обновил свой вопрос, чтобы он был правильным.

Ответ №4:

Похоже, но не то же самое. Empty вернет значение true, если $_GET['act'] равно любому из следующих:

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

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

Комментарии:

1. Не могли бы вы привести пример, чтобы доказать, что они не совпадают, т. Е. один true , а другой false ?

2. Если бы у вас было введено число, и они ввели 0 , первое вернуло бы true (задано, а не равно пустой строке), тогда как empty() вернул бы false .