Разница между if (isset ($ var)) и if ($ var)

Возможный дубликат:
В чем разница между if (! Variable) и if (isset ($ variable))?

В API-интерфейсе Facebooks php они используют if ($ var) {// do something} else {// сделать что-то еще} whick заставил меня задуматься о разнице if ($ var) и if (isset ($ var)). Первая уверенность выглядит аккуратно, но могу ли я ее использовать?

С помощью

if ($var) 

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

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

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

Разница заключается в том, что isset будет верен для любой переменной, которая была объявлена ​​/ инициализирована на что угодно (кроме нуля). if($var) истинно для всех значений var OTHER, чем те, которые вычисляются как false (0, '', null, false и т. д.).

Таким образом, разница в значениях, которые не являются нулевыми, но все равно оцениваются как false: 0, '' (пустая строка), false, пустой массив и т. Д.

Попробуй это:

 $var = ''; //or equivalently 0, false, '' if(isset($var)) echo 'a'; if($var) echo 'b'; 

isset проверит, была ли установлена ​​переменная, и если ($ var) проверяет, является ли переменная истиной.

if ($ var) будет вызывать предупреждение, если переменная не установлена, поэтому лучше всего сделать это

 if (isset($var) && $var) 

Что будет проверять, установлено ли оно И это правда

if ($ var) проверяет значение истинности $ var, а isset ($ var) проверяет, инициализирован ли $ var. Если $ var не был инициализирован, if ($ var) будет вызывать уведомление «неизвестная переменная var». Но isset проверяет, установлен ли $ var; если $ var инициализируется, он вернет свое значение, иначе вернет false.

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

 if (isset($var)) { 

Это проверяет, установлена ​​ли переменная. Единственная другая проверка – это увидеть, что $var не установлен в null (так как это почти эквивалентно отключению).

 if ($var) { 

Это проверяет, является ли значение, которое имеет значение $var , правдиво. Это может показаться странной концепцией, но иногда неинтуитивные вещи происходят на PHP с сопоставлениями. Условие будет передано, если значение $var – это все, что true при преобразовании в логическое. См. Руководство для списка того, что преобразуется в true и что преобразуется в false .

в заключение

Часто бывает так, что можно использовать оба варианта. Поскольку isset – это языковая функция, не стандартная функция, вы можете передать ей любое имя переменной, и она не будет вызывать ошибку. Он просто вернет false если переменная не определена. Однако, если вы попытаетесь использовать неинициализированную переменную вне этого контекста, вы получите сообщение об ошибках.

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

 if (isset($var) && $var) {