PHP - Какой условный тест использовать? - PullRequest
0 голосов
/ 21 января 2019

Эквивалентны ли эти 2 выражения (я имею в виду "могу ли я заменить 1-е на 2-е):

if ($var) { ... }

и

if (!empty($var)) { ... }

Я чувствую, что есть разница, ноЯ рационально не могу сказать, какой из них.

Для меня первый оценивает, является ли $ var истинным или ложным, и я могу ошибаться, но «ложные» оценки означают, что $ var - ложное (логическое), пустое (строка,объект или массив), значение 0 (int, float или string) или undefined ... так работает «пустая» функция (http://php.net/manual/en/function.empty.php).

Если эти тесты эквивалентны (по крайней мере, в определенных случаях), что лучше использовать (читабельность, производительность, обслуживание, ...)?

Спасибо

Ответы [ 3 ]

0 голосов
/ 21 января 2019
!empty($var)

Определить, считается ли переменная непустой. Переменная считается непустой, если она does exist или ее значение равно TRUE. empty () не генерирует предупреждение, если переменная не существует.

if ($var) { ... }

Вы будете проверять, содержит ли $ var значение, которое не является ложным - 1 - истина, 123 - тоже

Дополнительно:

isset($var)

Используя isset (), вы будете проверять, установлена ​​ли переменная, то есть записано ли в нее какое-либо ненулевое значение.

-

Все зависит от того, что вы хотите проверить / проверить. Надеюсь, это поможет.

0 голосов
/ 21 января 2019

empty () -> Если переменная не существует или равна false, пустая функция возвращает true.

Представьте, что вы не объявили $ var

if ($var) { 
    echo '1'; 
} 
else { 
    echo '2'; 
}

Вывод будет:

УВЕДОМЛЕНИЕ Неопределенная переменная: переменная в номере строки *

Если вы используете пустое значение:

if (!empty($var)) { 
    echo 1; 
}
else { 
    echo 2; 
}

Вывод будет:

2

Также следующие значения считаются пустыми

$var = 0;
$var = "";
$var = false;
$var = null;

Также проверьте функцию isset () isp Php.net

0 голосов
/ 21 января 2019

Они отличаются тем, что для вашего второго примера, $var не нужно устанавливать перед его использованием.В первом случае, если $var не задано, будет сгенерировано уведомление, а во втором примере - нет.

Это может быть полезно для значений, отправленных пользователями внутри * 1005.* и $_POST суперглобальные (.. и для $_COOKIE и $_SERVER).

// will generate a notice if there is no `foo` in the query string
if ($_GET['foo'])

// will not generate a notice, even if the key is not set
if (!empty($_GET['foo']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...