Php isset but null

Проверка на существование и пустоту в PHP

Часто возникают ситуации, когда нужно проверить существование или пустоту переменной. В PHP для этого есть функции isset() , empty() и array_key_exists() .

Проверка существования переменной

Функция isset() возвращает true , если переменная существует и её значение не null :

Если передать в isset несколько переменных, она вернёт true при существовании всех переменных:

'; echo isset($name, $age, $status) ? 'Василиса есть' : 'Василисы нет';
Василиса есть Василисы нет

Операторы объединения с NULL

В PHP 7 появился оператор объединения с NULL (или NULL-коалесцентный оператор) ?? . Он позволяет получить значение переменной, если она задана и не равна NULL, а иначе — значение по-умолчанию:

В PHP 7.4 появился присваивающий оператор объединения с NULL ??= .Он позволяет удобно задать значение переменной, если эта переменная ещё не задана (либо равна NULL):

// Как было раньше $name = $name ?? 'Василий'; // Как стало в PHP 7.4 $name ??= 'Василий';

Проверка на пустоту

Напомню, переменная считается пустой (приводится к false), если она имеет одно из следующих значений:

  • 0 (целое или дробное)
  • » (пустая строка)
  • ‘0’ (строка с числом 0)
  • [] (пустой массив)
  • null

Функция empty() возвращает true , если переменная не существует или пустая:

Поведение isset() и empty() сначала может немного запутать: первая возвращает true при существовании переменной, вторая — при не существовании. К этому нужно просто привыкнуть.

Читайте также:  Python function name as str

На самом деле isset() и empty() , аналогично echo , являются синтаксическими конструкциями, а не функциями.

Функции isset() и empty() гасят ошибку обращения к несуществующей переменной. Это одна из причин, почему они не являются обычными функциями.

ceil($var); // Notice: Undefined variable: var isset($var); // Ошибки нет

Существование элемента массива

Как мы узнали чуть выше, isset() возвращает false , если переменная существует, но имеет значение null .

Бывают ситуации, когда нам необходимо точно знать, существует ли определённый элемент массива или нет, даже если его значение NULL.

Для этого в PHP существует функция array_key_exists() :

Источник

isset

Determine if a variable is considered set, this means if a variable is declared and is different than null .

If a variable has been unset with the unset() function, it is no longer considered to be set.

isset() will return false when checking a variable that has been assigned to null . Also note that a null character ( «\0» ) is not equivalent to the PHP null constant.

If multiple parameters are supplied then isset() will return true only if all of the parameters are considered set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.

Parameters

The variable to be checked.

Return Values

Returns true if var exists and has any value other than null . false otherwise.

Examples

Example #1 isset() Examples

// This will evaluate to TRUE so the text will be printed.
if (isset( $var )) echo «This var is set so I will print.» ;
>

// In the next examples we’ll use var_dump to output
// the return value of isset().

var_dump (isset( $a )); // TRUE
var_dump (isset( $a , $b )); // TRUE

var_dump (isset( $a )); // FALSE
var_dump (isset( $a , $b )); // FALSE

$foo = NULL ;
var_dump (isset( $foo )); // FALSE

This also work for elements in arrays:

$a = array ( ‘test’ => 1 , ‘hello’ => NULL , ‘pie’ => array( ‘a’ => ‘apple’ ));

var_dump (isset( $a [ ‘test’ ])); // TRUE
var_dump (isset( $a [ ‘foo’ ])); // FALSE
var_dump (isset( $a [ ‘hello’ ])); // FALSE

// The key ‘hello’ equals NULL so is considered unset
// If you want to check for NULL key values then try:
var_dump ( array_key_exists ( ‘hello’ , $a )); // TRUE

// Checking deeper array values
var_dump (isset( $a [ ‘pie’ ][ ‘a’ ])); // TRUE
var_dump (isset( $a [ ‘pie’ ][ ‘b’ ])); // FALSE
var_dump (isset( $a [ ‘cake’ ][ ‘a’ ][ ‘b’ ])); // FALSE

Example #2 isset() on String Offsets

$expected_array_got_string = ‘somestring’ ;
var_dump (isset( $expected_array_got_string [ ‘some_key’ ]));
var_dump (isset( $expected_array_got_string [ 0 ]));
var_dump (isset( $expected_array_got_string [ ‘0’ ]));
var_dump (isset( $expected_array_got_string [ 0.5 ]));
var_dump (isset( $expected_array_got_string [ ‘0.5’ ]));
var_dump (isset( $expected_array_got_string [ ‘0 Mostel’ ]));
?>

The above example will output:

bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)

Notes

isset() only works with variables as passing anything else will result in a parse error. For checking if constants are set use the defined() function.

Note: Because this is a language construct and not a function, it cannot be called using variable functions, or named arguments.

Note:

When using isset() on inaccessible object properties, the __isset() overloading method will be called, if declared.

See Also

  • empty() — Determine whether a variable is empty
  • __isset()
  • unset() — Unset a given variable
  • defined() — Checks whether a given named constant exists
  • the type comparison tables
  • array_key_exists() — Checks if the given key or index exists in the array
  • is_null() — Finds whether a variable is null
  • the error control @ operator

Источник

isset

Если переменная была удалена с помощью unset() , то она больше не считается установленной. isset() вернет FALSE , если проверяемая переменная имеет значение NULL . Следует помнить, что NULL -байт («\0») не является эквивалентом константе PHP NULL .

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

Список параметров

Возвращаемые значения

Возвращает TRUE , если var определена и значение отличное от NULL , и FALSE в противном случае.

Список изменений

Проверка нечислового индекса строки теперь возвращает FALSE .

Примеры

Пример #1 Пример использования isset()

// Проверка вернет TRUE, поэтому текст будет напечатан.
if (isset( $var )) echo «Эта переменная определена, поэтому меня и напечатали.» ;
>

// В следующем примере мы используем var_dump для вывода
// значения, возвращаемого isset().

var_dump (isset( $a )); // TRUE
var_dump (isset( $a , $b )); // TRUE

var_dump (isset( $a )); // FALSE
var_dump (isset( $a , $b )); // FALSE

$foo = NULL ;
var_dump (isset( $foo )); // FALSE

Функция также работает с элементами массивов:

$a = array ( ‘test’ => 1 , ‘hello’ => NULL , ‘pie’ => array( ‘a’ => ‘apple’ ));

var_dump (isset( $a [ ‘test’ ])); // TRUE
var_dump (isset( $a [ ‘foo’ ])); // FALSE
var_dump (isset( $a [ ‘hello’ ])); // FALSE

// Элемент с ключом ‘hello’ равен NULL, поэтому он считается неопределенным
// Если Вы хотите проверить существование ключей со значением NULL, используйте:
var_dump ( array_key_exists ( ‘hello’ , $a )); // TRUE

// Проверка вложенных элементов массива
var_dump (isset( $a [ ‘pie’ ][ ‘a’ ])); // TRUE
var_dump (isset( $a [ ‘pie’ ][ ‘b’ ])); // FALSE
var_dump (isset( $a [ ‘cake’ ][ ‘a’ ][ ‘b’ ])); // FALSE

Пример #2 isset() и строковые индексы

В PHP 5.4 был изменен способ обработки строковых индексов в isset() .

$expected_array_got_string = ‘somestring’ ;
var_dump (isset( $expected_array_got_string [ ‘some_key’ ]));
var_dump (isset( $expected_array_got_string [ 0 ]));
var_dump (isset( $expected_array_got_string [ ‘0’ ]));
var_dump (isset( $expected_array_got_string [ 0.5 ]));
var_dump (isset( $expected_array_got_string [ ‘0.5’ ]));
var_dump (isset( $expected_array_got_string [ ‘0 Mostel’ ]));
?>

Результат выполнения данного примера в PHP 5.3:

bool(true) bool(true) bool(true) bool(true) bool(true) bool(true)

Результат выполнения данного примера в PHP 5.4:

bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)

Примечания

isset() работает только с переменными, поэтому передача в качестве параметров любых других значений приведет к ошибке парсинга. Для проверки определения констант используйте функцию defined() .

Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.

Замечание:

При использовании isset() на недоступных свойствах объекта, будет вызываться перегруженный метод __isset(), если он существует.

Смотрите также

  • empty() — Проверяет, пуста ли переменная
  • __isset()
  • unset() — Удаляет переменную
  • defined() — Проверяет существование указанной именованной константы
  • Таблица сравнения типов
  • array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
  • is_null() — Проверяет, является ли значение переменной равным NULL
  • Оператор управления ошибками @

Источник

PHP isset() vs. empty() vs. is_null()

Monty Shokeen

Monty Shokeen Last updated Jun 11, 2021

You will use variables in almost every program that you write using PHP. Most of the time these variables have a value, and we usually create them with an initial value. However, there is always a possibility that some of the variables you are using are not initialized. This can result in a warning from PHP about using an undefined variable.

There can be many reasons for undefined variables. The most common ones are that you either actually did not define the variable or you made a spelling mistake when reusing it somewhere else. This is just a programming bug. However, another possibility that can result in an undefined variable is that it has been defined conditionally.

You also might find that a variable has the value NULL . This also can happen for a number of reasons. For example, the variable might just have not been initialized with a value. Or the null value might be returned from a function to signal some sort of error.

In any case, using a variable before it has been defined or when it has a null value can have unintended consequences. In this tutorial, I’ll show you how to check if an element has been defined and see if it is empty or null.

You can use isset() , empty() , or is_null() to check if either one or all of those conditions are true or false.

Definitions

Let’s get started with some definitions.

  1. isset() : You can use isset() to determine if a variable is declared and is different than null .
  2. empty() : It is used to determine if the variable exists and the variable’s value does not evaluate to false .
  3. is_null() : This function is used to check if a variable is null .

PHP isset() vs. empty()

As we saw from the definitions, isset() will return true if we have defined the variable before and set its value to something other than NULL . This can include 0 , an empty string, or false . On the other hand, empty() will return true whenever the variable value is set to something that evaluates to false —we call these «falsey» values. Examples of falsey values include 0 , the empty string «» and the string «0» , an empty array, NULL , or of course the boolean false .

One similarity between isset() and empty() is that they are both language constructs and therefore cannot be called using variable functions.

The following code snippet should explain the difference between these two.

Источник

Оцените статью