Php compare with null

PHP is_null

Summary: in this tutorial, you’ll learn how to use the PHP is_null() construct to check if a variable is null .

Introduction to the PHP is_null() construct

PHP is_null() accepts a variable and returns true if that variable is null . Otherwise, it returns false .

is_null(mixed $v): boolCode language: PHP (php)

In this syntax, the $v is the variable to check. If $v doesn’t exist, the is_null() also returns true and issues a notice.

Since the is_null() is a language construct, not a function, you cannot call it via variable functions. For example, the following statement will result in an error:

 $f = is_null;Code language: PHP (php)

However, you can define a function that wraps the is_null() construct like this:

 function isnull($v): bool < return is_null($v); >Code language: PHP (php)

Alternatively, you can define an arrow function, assign it to a variable, and use that variable function.

 $isnull = fn($v) => is_null($v); $color = null; echo $isnull($color); // trueCode language: PHP (php)

PHP is_null() examples

The following example uses the is_null() construct and returns true because the $count variable doesn’t exist:

 var_dump(is_null($count));Code language: PHP (php)

This code also issues a notice:

Notice: Undefined variable: $countCode language: PHP (php)

The following example uses the is_null() and returns true because the $count variable is null :

 $count = null; var_dump(is_null($count)); // trueCode language: PHP (php)

The following example uses the is_null() and returns false because the $count variable is not null :

 $count = 1; var_dump(is_null($count)); // falseCode language: PHP (php)

PHP is_null() with array

The following example uses the is_null() to check if the element with the key link is null or not. It returns true because the element doesn’t exist:

 $colors = [ 'text' => 'black', 'background' => 'white' ]; var_dump(is_null($colors['link']));Code language: PHP (php)
Notice: Undefined index: linkCode language: PHP (php)

PHP is_null() with string index

The following example uses the is_null() to check if the element at index 5 in the string $message is null or not:

 $message = 'Hello'; var_dump(is_null($message[5]));Code language: PHP (php)

It returns false and issues a notice:

PHP Notice: Uninitialized string offset: 5Code language: PHP (php)

PHP is_null(), equal opeartor (==), and identity operator (===)

The echo displays an empty string for the false value, which is not intuitive. The following defines a function that displays false as the string false instead of an empty string:

 function echo_bool(string $title, bool $v): void < echo $title, "\t", $v === true ? 'true' : 'false', PHP_EOL; >Code language: PHP (php)

Comparing falsy values with null using equal operator (==)

Comparing a falsy value with null using the equal operator ( == ) will return true . For example:

The following example compares null with falsy values using the equal operator ( == ):

 function echo_bool(string $title, bool $v): void < echo $title, "\t", $v === true ? 'true' : 'false', PHP_EOL; > echo_bool('null == false:', null == false); echo_bool('null == 0:', null == 0); echo_bool('null == 0.0:', null == 0.0); echo_bool('null =="0":', null == false); echo_bool('null == "":', null == ''); echo_bool('null == []:', null == []); echo_bool('null == null:', null == null);Code language: PHP (php)
null == false: true null == 0: true null == 0.0: true null =="0": true null == "": true null == []: true null == null: trueCode language: plaintext (plaintext)

Comparing falsy value with null using identity operator (===)

The following example uses the identity operator (=== ) to compare null with falsy values, only null === null returns true .

 echo_bool('null === false:', null === false); echo_bool('null === 0:', null === 0); echo_bool('null === 0.0:', null === 0.0); echo_bool('null ==="0":', null === false); echo_bool('null === "":', null === ''); echo_bool('null === []:', null === []); echo_bool('null === null:', null === null);Code language: plaintext (plaintext)
null === false: false null === 0: false null === 0.0: false null ==="0": false null === "": false null === []: false null === null: trueCode language: PHP (php)

Comparing falsy values with null using the PHP is_null()

The following example uses the is_null() to check if falsy values are null :

 function echo_bool(string $title, bool $v): void < echo $title, "\t", $v === true ? 'true' : 'false', PHP_EOL; > echo_bool('is_null(false):', is_null(false)); echo_bool('is_null(0):', is_null(0)); echo_bool('is_null(0.0)', is_null(0.0)); echo_bool('is_null("0"):', is_null("0")); echo_bool('is_null(""):', is_null("")); echo_bool('is_null([]):', is_null([])); echo_bool('is_null(null):', is_null(null));Code language: PHP (php)
is_null(false): false is_null(0): false is_null(0.0) false is_null("0"): false is_null(""): false is_null([]): false is_null(null): trueCode language: PHP (php)

The is_null() and identity operator ( === ) return the same result.

Summary

  • The is_null() checks a value and returns true if that value is null . Otherwise, it returns false .
  • The is_null() behaves the same as the identity operator ( === ).

Источник

Операторы сравнения

Операторы сравнения, как это видно из их названия, позволяют сравнивать между собой два значения. Возможно вам будет интересно также ознакомиться с разделом Сравнение типов, в котором приведено большое количество соответствующих примеров.

Операторы сравнения

Пример Название Результат
$a == $b Равно TRUE если $a равно $b после преобразования типов.
$a === $b Тождественно равно TRUE если $a равно $b и имеет тот же тип.
$a != $b Не равно TRUE если $a не равно $b после преобразования типов.
$a <> $b Не равно TRUE если $a не равно $b после преобразования типов.
$a !== $b Тождественно не равно TRUE если $a не равно $b или они разных типов.
$a < $b Меньше TRUE если $a строго меньше $b .
$a > $b Больше TRUE если $a строго больше $b .
$a Меньше или равно TRUE если $a меньше или равно $b .
$a >= $b Больше или равно TRUE если $a больше или равно $b .

В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа. Эти правила также распространяются на оператор switch. Преобразование типов не происходит при использовании === или !== так как в этом случае кроме самих значений сравниваются еще и типы.

var_dump ( 0 == «a» ); // 0 == 0 -> true
var_dump ( «1» == «01» ); // 1 == 1 -> true
var_dump ( «10» == «1e1» ); // 10 == 10 -> true
var_dump ( 100 == «1e2» ); // 100 == 100 -> true

switch ( «a» ) case 0 :
echo «0» ;
break;
case «a» : // Эта ветка никогда не будет достигнута, так как «a» уже сопоставленно с 0
echo «a» ;
break;
>
?>

Для различных типов сравнение происходит в соответствии со следующей таблицей (по порядку).

Сравнение различных типов

Тип операнда 1 Тип операнда 2 Результат
null или string string NULL преобразуется в «», числовое или лексическое сравнение
bool или null что угодно Оба операнда преобразуются в bool , FALSE < TRUE
object object Встроенные классы могут определять свои собственные правила сравнения, объекты разных классов не сравниваются, объекты одного класса — сравниваются свойства тем же способом, что и в массивах (PHP 4), в PHP 5 есть свое собственное объяснение
string , resource или number string , resource или number Строки и ресурсы переводятся в числа, обычная математика
array array Массивы с меньшим числом элементов считаются меньше, если ключ из первого операнда не найден во втором операнде — массивы не могут сравниваться, иначе идет сравнение соответствующих значений (смотри пример ниже)
object что угодно object всегда больше
array что угодно array всегда больше

Пример #1 Сравнение булево/null

// Булево и null всегда сравниваются как булево значение
var_dump ( 1 == TRUE ); // TRUE — тоже что и (bool)1 == TRUE
var_dump ( 0 == FALSE ); // TRUE — тоже что и (bool)0 == FALSE
var_dump ( 100 < TRUE ); // FALSE - тоже что и (bool)100 < TRUE
var_dump (- 10 < FALSE ); // FALSE - тоже что и (bool)-10 < FALSE
var_dump ( min (- 100 , — 10 , NULL , 10 , 100 )); // NULL — (bool)NULL < (bool)-100 , тоже что и FALSE < TRUE
?>

Пример #2 Алгоритм сравнения обычных массивов

// Так сравниваются массивы при сравнении стандартными операторами
function standard_array_compare ( $op1 , $op2 )
if ( count ( $op1 ) < count ( $op2 )) return - 1 ; // $op1 < $op2
> elseif ( count ( $op1 ) > count ( $op2 )) return 1 ; // $op1 > $op2
>
foreach ( $op1 as $key => $val ) if (! array_key_exists ( $key , $op2 )) return null ; // не могут быть сравнимы
> elseif ( $val < $op2 [ $key ]) return - 1 ;
> elseif ( $val > $op2 [ $key ]) return 1 ;
>
>
return 0 ; // $op1 == $op2
>
?>

Сравнение чисел с плавающей точкой

Из-за особого внутреннего представления float , не нужно проверять на равенство два float -числа.

Для более подробной информации смотрите документацию по типу float .

Тернарный оператор

Еще одним условным оператором является тернарный оператор «?:».

Пример #3 Присваивание значения по умолчанию

// Пример использования тернарного оператора
$action = (empty( $_POST [ ‘action’ ])) ? ‘default’ : $_POST [ ‘action’ ];

// Приведенный выше код аналогичен следующему блоку с использованием if/else
if (empty( $_POST [ ‘action’ ])) $action = ‘default’ ;
> else $action = $_POST [ ‘action’ ];
>

Выражение (expr1) ? (expr2) : (expr3) интерпретируется как expr2 , если expr1 имеет значение TRUE , или как expr3 если expr1 имеет значение FALSE .

Начиная с версии PHP 5.3 также стало возможным не писать среднюю часть тернарного оператора. Выражение expr1 ?: expr3 возвращает expr1 если expr1 имеет значение TRUE , и expr3 в другом случае.

Замечание: Пожалуйста учтите, что тернарный оператор является выражением и трактуется не как переменная, а как результат выражения. Это важно знать, если вы хотите вернуть переменную по ссылке. Выражение return $var == 42 ? $a : $b; не будет работать в функции, возвращающей значение по ссылке, а в более поздних версиях PHP также будет выдано предупреждение.

Замечание:

Рекомендуется избегать «нагромождения» тернарных выражений. Поведение PHP неочевидно при использовании нескольких тернарных операторов в одном выражении:

Пример #4 Неочевидное поведение тернарного оператора

// на первый взгляд, следующий код должен вывести ‘true’
echo ( true ? ‘true’ : false ? ‘t’ : ‘f’ );

// однако, он выводит ‘t’
// это происходит потому, что тернарные выражения вычисляются слева направо

// это намного более очевидная версия вышеприведенного кода
echo (( true ? ‘true’ : false ) ? ‘t’ : ‘f’ );

// здесь вы можете видеть, что первое выражение вычисляется в ‘true’, которое
// в свою очередь вычисляется в (bool)true, таким образом возвращая истинную ветвь
// второго тернарного выражения.
?>

Источник

Читайте также:  Remove classes with javascript
Оцените статью