Отличие «if ( isset( $var ) )» от «if ( $var )» в PHP
- При написании PHP-скриптов довольно часто используются следующие два выражения:
if ( isset( $var ) )
;if ( $var )
.
Для многих начинающих программистов, в том числе и меня, отличие между ними изначально было не определено, от чего в скриптах получались «дыры». Разобравшись «что к чему», я решил написать данный пост.
На самом деле всё просто — давайте проанализируем что будут возвращать выражения в условиях ( isset( $var ) )
и просто ( $var )
при $var = 0
:
<?php
$var = 0;
var_dump( isset( $var ) ); // bool(true)
var_dump( $var ); // int(0)
?>
Выражения в условиях конструкции if
вычисляются в булев тип, поэтому в первом случае инструкция выполнится, а во втором — нет, так как ноль — это булево значение false
. Тоже самое будет и при следующих значениях переменной $var
:
<?php
$var = '';
$var = false;
?>
Чтобы понять как это работает, нужно знать типы данных PHP (в частности, преобразование в булев тип), а также возвращаемые значения функции isset()
.