Сокращение для isset и! Empty - PullRequest
       11

Сокращение для isset и! Empty

3 голосов
/ 01 декабря 2011

Глупый вопрос, я знаю, но если я не знаю, установлена ​​ли переменная $var или нет, я должен использовать

isset($var) && !empty($var)

, чтобы проверить, имеет ли оно какое-либо значение или

!empty($var) достаточно? Будет ли проблема, если во втором случае $var будет нулевым?

Ответы [ 4 ]

9 голосов
/ 01 декабря 2011

isset и empty являются языковыми конструкциями.И empty() внутренне сначала проверяет isset, затем отрицает это или, альтернативно, также проверяет значения, равные FALSE в логическом контексте.

Так что да, !empty() достаточно.

2 голосов
/ 01 декабря 2011

Вы должны использовать isset (), поскольку! Empty () вернет false, если ваш $ var равен 0.

<?php
$var = 0;

// Evaluates to true because $var is empty
if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

//Evaluates false because $var is empty
if(!empty($var)){

}

// Evaluates as true because $var is set
if (isset($var)) {
    echo '$var is set even though it is empty';
}
?>
2 голосов
/ 01 декабря 2011

Да, вы можете сбросить isset():

empty() противоположно (boolean) var, за исключением того, что предупреждение не генерируется, когдапеременная не установлена ​​.

Это можно увидеть с помощью следующего кода:

error_reporting(E_ALL);

var_dump(empty($var));
bool(true)

(обратите внимание на отсутствие предупреждения о неопределенной переменной)

1 голос
/ 01 декабря 2011

Я думаю, что вы можете полностью отбросить isset(), если вы используете empty(), потому что empty() проверяет, установлена ​​ли переменная первой тоже

, так что в конце концов, используйте

if (!empty($var)) {
    //isset and not empty
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...