Уроки PHP – Когда использовать isset(), empty() и is_null() в PHP
Довольно часто, при написании PHP кода, возникают ситуации, когда рабочий на вид код не работает. После некоторых изысканий, вы обнаруживаете, что использовали неправильную функцию для проверки переменной в PHP. Существует много функций в PHP, которые предназначены для проверки состояния и значения переменных, в том числе те, которые могут уведомлять вас, есть ли какое-то значение, доступное вообще для использования. Среди этих функций, выделяются особенно три: isset(), empty() и is_null(),которые легко перепутать.
В сегодняшнем уроке мы рассмотрим основные отличия этих функций, а также примеры их использования в PHP.
Обзор функций isset(), empty() и is_null() в PHP
Все эти три функции встроены в PHP, поэтому при написании кода они всегда доступны для использования. Первые две – empty()
и isset()
– это языковые конструкции, а is_null()
– это стандартная функция. При проверке кода необходимо помнить, что языковые конструкции в PHP немного быстрее (но, честно говоря, не значительно), их нельзя использовать в переменных функциях, и они не выдают ошибки при оценке переменных, которых не существует.
Давайте для начала рассмотрим синтаксис и краткое описание этих трех функций, которое указано в официальном руководстве php.net.
Функция empty()
Синтаксис функции:
<?php empty ( mixed $var ) : bool ?>
Определяет, является ли переменная пустой. Переменная считается пустой, если она не существует или если ее значение равно FALSE
. При этом, если переменная не существует, функция empty()
не выдает предупреждения.
Функция isset()
Синтаксис функции:
<?php isset ( mixed $var [, mixed $... ] ) : bool ?>
Определяет, установлена ли переменная, и не имеет ли она значение NULL
.
Если переменная была сброшена (удалена) с помощью функции unset()
, такая переменная больше не будет установлена. Функция isset()
при тестировании (проверке) переменной вернет FALSE
, если для нее установлено значение NULL
. Также обратите внимание, что нулевой символ («\0
«) не эквивалентен PHP константе NULL
.
Если задано несколько параметров, тогда isset()
вернет TRUE
, но только если все параметры определены. Оценка идет слева направо и останавливается, как только встречается неустановленная переменная.
Функция is_null()
Синтаксис функции:
<?php is_null ( mixed $var ) : bool ?>
Определяет, является ли данной переменной значение, равное NULL
.
В чем отличие между функциями isset(), empty() и is_null() в PHP?
Из приведенных выше определений видно, что эти три функции выполняют сходные, но не одинаковые функции. С помощью этих функций вы можете проверять, является ли переменная нулевой (NULL), истинной (TRUE) или ложной (FALSE), а также была ли переменная объявлена.
Когда использовать функцию empty()?
При использовании empty()
, вы можете проверять, является ли переменная ложной (false), но также и то, существует ли переменная. Эту функцию лучше всего использовать, когда вы хотите убедиться, что переменная существует и имеет значение, которое не равно false
. Обратите внимание, что PHP будет обрабатывать пустые строки, целые числа 0, числа с плавающей запятой 0.0, пустые массивы и логическое значение false
как false. Таким образом, в основном, используйте empty()
только тогда, когда вы хотите убедиться, что в переменной есть какое-то фактическое значение.
Поскольку вам не нужно объявлять переменные перед их использованием в PHP, вы можете оказаться в ситуации, когда вы пытаетесь выполнить действия или запустить другую проверку для переменной, которая еще не была объявлена. Хотя по этой и другим причинам рекомендуется объявлять переменные перед использованием, эта ошибка – одна из причин того, что empty()
используется не так, как isset()
.
Когда использовать функцию isset()?
Если вы используете isset()
, вы можете специально проверять, была ли переменная уже объявлена и что ее значение не равно null
. Таким образом, пока у вас есть объявленная переменная, у которой установлено значение, но не значение NULL
, при тесте вы получите true
. Это хорошее условие для проверки, перед выполнением других проверок для выполнения действий с переменной. Пример:
<?php $variable = 'Какая-то строка'; // Объявление переменной // Проверка существования переменной, затем проверка значения if ( isset($variable) && $variable !== 'Какая-то другая строка' ) { echo 'Этот код сработает, поскольку оба условия верны'; } ?>
В приведенном выше примере мы объявили нашу переменную в виде строки, а затем проверили, установлена ли переменная (установлена), и она не равна другой строке (она не равна). Поскольку оба этих условия верны, мы в этом условии можем проводить дальнейшие действия с переменной и ее значением.
Когда использовать функцию is_null()?
Наконец, функция is_null()
работает аналогично функции isset()
, с одним ключевым отличием: переменная должна быть объявлена, чтобы вернулся true
, даже при условии, что она объявлена без какого-либо значения или определена как NULL
.
В противном случае функция is_null()
не только не будет правильно работать, но и будет возвращать уведомление из-за невозможности провести проверку. Обычно уведомление выглядит примерно так:
Notice: Undefined variable: variable in /{PATH}/ on line X
Поскольку isset()
является языковой конструкцией и может обрабатывать переменные, которые не были объявлены, обычно рекомендуется использовать isset()
в большинстве случаев. Если вам нужно использовать is_null()
, вам нужно найти другой способ функционирования вашего кода.
Какой ответ возвращают функции isset(), empty() и is_null() в PHP
В приведенной ниже таблице рассмотрены основные результаты использования данных функций в PHP коде:
Значение переменной ($var) | isset($var) |
empty($var) |
is_null($var) |
---|---|---|---|
«» (пустая строка) | bool(true) | bool(true) | bool(false) |
» » (пробел) | bool(true) | bool(false) | bool(false) |
FALSE | bool(true) | bool(true) | bool(false) |
TRUE | bool(true) | bool(false) | bool(false) |
array() (пустой массив) | bool(true) | bool(true) | bool(false) |
NULL | bool(false) | bool(true) | bool(true) |
«0» (0 в виде строки) | bool(true) | bool(true) | bool(false) |
0 (0 в виде целого числа) | bool(true) | bool(true) | bool(false) |
0.0 (0 в виде числа с плавающей точкой) | bool(true) | bool(true) | bool(false) |
переменная $var; (переменная объявлена, но без значения) | bool(false) | bool(true) | bool(true) |
На сегодня все. Спасибо, что читаете нас!