Содержание
Часто возникают ситуации, когда нужно проверить существование или пустоту переменной. В PHP для этого есть функции isset() , empty() и array_key_exists() .
Проверка существования переменной
Функция isset() возвращает true , если переменная существует и её значение не null :
Если передать в isset() несколько переменных, она вернёт true при существовании всех переменных:
Результат в браузере: В PHP 7 появился Null-коалесцентный оператор ?? . Он позволяет получить значение переменной, если она есть, а иначе — значение по-умолчанию:
Проверка на пустоту
Напомню, переменная считается пустой (приводится к false), если она имеет одно из следующих значений:
- "" (пустая строка)
- 0 (целое или дробное число)
- "0" (строка)
- null
- false
- [] (пустой массив)
- $v (переменная объявлена, но не имеет значения)
Функция empty() возвращает true , если переменная не существует или пустая:
Поведение isset() и empty() сначала может немного запутать: первая возвращает true при существовании переменной, вторая — при не существовании. К этому нужно просто привыкнуть.
На самом деле isset() и empty() , аналогично echo , являются синтаксическими конструкциями, а не функциями.
Существование элемента массива
Как мы узнали чуть выше, isset() возвращает false , если переменная существует, но имеет значение null . Для обычных переменных это терпимо, но при работе с массивами в некоторых случаях требуется точно знать, существует ли элемент массива или нет, даже со значением null.
В PHP для этого существует функция array_key_exists() :
(PHP 4, PHP 5, PHP 7)
empty — Проверяет, пуста ли переменная
Описание
Проверяет, считается ли переменная пустой. Переменная считается пустой, если она не существует или её значение равно FALSE . empty() не генерирует предупреждение если переменная не существует.
Список параметров
До PHP 5.5 empty() проверяет только переменные, и попытка проверить что-то еще вызовет ошибку синтаксиса. Другими словами, следующий код не будет работать: empty(trim($name)). Используйте вместо него trim($name) == false.
Если переменная не существует, предупреждение не генерируется. Это значит, что empty() фактически является точным эквивалентом конструкции !isset($var) || $var == false
Возвращаемые значения
Возвращает FALSE , если var существует, и содержит непустое и ненулевое значение. В противном случае возвращает TRUE .
Следующие значения воспринимаются как пустые:
- "" (пустая строка)
- (целое число)
- 0.0 (дробное число)
- "0" (строка)
- NULL
- FALSE
- array() (пустой массив)
- $var; (переменная объявлена, но не имеет значения)
Список изменений
Версия | Описание |
---|---|
5.5.0 |
empty() теперь поддерживает выражения, а не только переменные.
Проверка нечислового индекса строки возвращает TRUE .
Примеры
Пример #1 Простое сравнение empty() и isset() .
// Принимает значение true, потому что $var пусто
if (empty( $var )) <
echo ‘$var или 0, или пусто, или вообще не определена’ ;
>
// Принимает значение true, потому что $var определена
if (isset( $var )) <
echo ‘$var определена, даже если она пустая’ ;
>
?>
Пример #2 empty() и строковые индексы
В PHP 5.4 был изменен способ обработки строковых индексов в empty() .
Результат выполнения данного примера в PHP 5.3:
Результат выполнения данного примера в PHP 5.4:
Примечания
Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.
При использовании функции empty() на недоступных (необъявленных) свойствах объекта будет вызван встроенный метод объекта __isset(), если он определен.
Смотрите также
- isset() — Определяет, была ли установлена переменная значением отличным от NULL
- __isset()
- unset() — Удаляет переменную
- array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
- count() — Подсчитывает количество элементов массива или что-то в объекте
- strlen() — Возвращает длину строки
- Таблица сравнения типов
(PHP 4, PHP 5, PHP 7)
empty — Проверяет, пуста ли переменная
Описание
Проверяет, считается ли переменная пустой. Переменная считается пустой, если она не существует или её значение равно FALSE . empty() не генерирует предупреждение, если переменная не существует.
Список параметров
До PHP 5.5 empty() проверяет только переменные, и попытка проверить что-то еще вызовет ошибку синтаксиса. Другими словами, следующий код не будет работать: empty(trim($name)). Используйте вместо него trim($name) == false.
Если переменная не существует, предупреждение не генерируется. Это значит, что empty() фактически является точным эквивалентом конструкции !isset($var) || $var == false
Возвращаемые значения
Возвращает FALSE , если var существует и содержит непустое ненулевое значение. В противном случае возвращает TRUE .
Следующие значения воспринимаются как пустые:
- "" (пустая строка)
- (целое число)
- 0.0 (число с плавающей точкой)
- "0" (строка)
- NULL
- FALSE
- array() (пустой массив)
Список изменений
Версия | Описание |
---|---|
5.5.0 |
empty() теперь поддерживает выражения, а не только переменные.
Проверка нечислового индекса строки возвращает TRUE .
Примеры
Пример #1 Простое сравнение empty() и isset() .
// Принимает значение true, потому что $var пусто
if (empty( $var )) <
echo ‘$var или 0, или пусто, или вообще не определена’ ;
>
// Принимает значение true, потому что $var определена
if (isset( $var )) <
echo ‘$var определена, даже если она пустая’ ;
>
?>
Пример #2 empty() и строковые индексы
В PHP 5.4 был изменен способ обработки строковых индексов в empty() .
Результат выполнения данного примера в PHP 5.3:
Результат выполнения данного примера в PHP 5.4:
Примечания
Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.
При использовании функции empty() на недоступных (необъявленных) свойствах объекта будет вызван встроенный метод объекта __isset(), если он определен.
Смотрите также
- isset() — Определяет, была ли установлена переменная значением, отличным от NULL
- __isset()
- unset() — Удаляет переменную
- array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
- count() — Подсчитывает количество элементов массива или что-то в объекте
- strlen() — Возвращает длину строки
- Таблица сравнения типов