|
|||
|
NULL в PHPЗначения NULL в PHP используются редко и в большинстве случаев поступают из БД MySQL. Следует учесть, что NULL это не FALSE, TRUE или что-либо еще, а именно NULL. И чтобы понять, какой результат будет получен при проверке значений переменной, можно воспользоваться скриптом PHP, текст которого приведен ниже: Пример работы нескольких функций, по определению переменных
for ($i = 0; $i < 5; $i++) { unset($var_null); switch ($i) { case 0: $var_null_txt = '$var_null не определена или удалена: unset($var_null)'; break; case 1: $var_null = ''; $var_null_txt = '$var_null = \'\''; break; case 2: $var_null = null; $var_null_txt = '$var_null = null'; break; case 3: $var_null = 0; $var_null_txt = '$var_null = 0'; break; case 4: $var_null = 'T'; $var_null_txt = '$var_null = \'T\''; break; } echo '<h2>'.$var_null_txt.'</h2>'; $ret = ($var_null === null) ? '<span style="color: green; font-weight: bold">TRUE</span>' : '<span style="color: red; font-weight: bold">FALSE</span>'; echo 'if ($var_null === null) -> '.$ret.'<br>'; // is_null() возвращает TRUE для переменных, которым присвоено значение NULL // или не присвоено никакого значения. $ret = (is_null($var_null)) ? '<span style="color: green; font-weight: bold">TRUE</span>' : '<span style="color: red; font-weight: bold">FALSE</span>'; echo 'if (is_null($var_null)) -> '.$ret.'<br>'; // isset() возвращает TRUE для переменных, которым ПРИСВОЕНО любое значение кроме NULL. $ret = (isset($var_null)) ? '<span style="color: green; font-weight: bold">TRUE</span>' : '<span style="color: red; font-weight: bold">FALSE</span>'; echo 'if (isset($var_null)) -> '.$ret.'<br>'; $ret = (empty($var_null)) ? '<span style="color: green; font-weight: bold">TRUE</span>' : '<span style="color: red; font-weight: bold">FALSE</span>'; echo 'if (empty($var_null)) -> '.$ret.'<br>'; } Следует учесть, что если переменной не присвоено никакого значения или она удалена при помощи unset(), функция is_null() сгенерирует предупреждение "Undefined variable", в отличии от функции isset(), которая не выдаст вообще никаких предупреждений. После выполнения скрипта, будет получен такой результат: $var_null не определена или удалена: unset($var_null)if ($var_null === null) -> TRUEif (is_null($var_null)) -> TRUE if (isset($var_null)) -> FALSE if (empty($var_null)) -> TRUE $var_null = ''if ($var_null === null) -> FALSEif (is_null($var_null)) -> FALSE if (isset($var_null)) -> TRUE if (empty($var_null)) -> TRUE $var_null = nullif ($var_null === null) -> TRUEif (is_null($var_null)) -> TRUE if (isset($var_null)) -> FALSE if (empty($var_null)) -> TRUE $var_null = 0if ($var_null === null) -> FALSEif (is_null($var_null)) -> FALSE if (isset($var_null)) -> TRUE if (empty($var_null)) -> TRUE $var_null = 'T'if ($var_null === null) -> FALSEif (is_null($var_null)) -> FALSE if (isset($var_null)) -> TRUE if (empty($var_null)) -> FALSE А как же всетаки определить, присвоено переменной значение NULL или она не определена, если оператор сравнения if(is_null($var_null)) и if(!isset($var_null)) реагируют одинаково? Для этого, необходимо заглянуть в массив переменных, получаемый с помощью функции get_defined_vars(): if (array_key_exists('var_null', get_defined_vars()) ) echo 'Переменная $var_null определена'; else echo 'Переменная $var_null не определена'; При работе с массивами, также следует учитывать, что функция isset($row['name']) вернет значение FALSE, если массиву $row ключу "name" ($row['name']) присвоено значение NULL или $row['name'] вообще не определен. На помощь в разрешении неоднозначности снова прийдет функция array_key_exist(): if (array_key_exists('name', $row)) echo 'Ключ "name" определен'; else echo 'Ключ "name" не определен'; Опубликовано: 2011/10/16
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/php.php?txt=98" target="_blank">NULL в PHP</a> 12344
Добавить комментарий
|