- is_null
- Parameters
- Return Values
- Examples
- See Also
- User Contributed Notes 9 notes
- Проверка на массив, на наличие элементов и на пустоту в PHP
- Проверка массива на пустоту и пустые элементы в PHP
- Проверить наличие элемента в массиве
- Проверить наличие пустого массива в PHP
- 1. Использование empty() функция
- 2. Использование оператора отрицания
- 3. Использование оператора сравнения тождеств
- 4. Использование count() функция
- 5. Использование array_filter() функция
is_null
Finds whether the given variable is null .
Parameters
The variable being evaluated.
Return Values
Returns true if value is null , false otherwise.
Examples
Example #1 is_null() example
$foo = NULL ;
var_dump ( is_null ( $inexistent ), is_null ( $foo ));
Notice: Undefined variable: inexistent in . bool(true) bool(true)
See Also
- The null type
- isset() — Determine if a variable is declared and is different than null
- is_bool() — Finds out whether a variable is a boolean
- is_numeric() — Finds whether a variable is a number or a numeric string
- is_float() — Finds whether the type of a variable is float
- is_int() — Find whether the type of a variable is integer
- is_string() — Find whether the type of a variable is string
- is_object() — Finds whether a variable is an object
- is_array() — Finds whether a variable is an array
User Contributed Notes 9 notes
Micro optimization isn’t worth it.
You had to do it ten million times to notice a difference, a little more than 2 seconds
$a===NULL; Took: 1.2424390316s
is_null($a); Took: 3.70693397522s
difference = 2.46449494362
difference/10,000,000 = 0.000000246449494362
The execution time difference between ===NULL and is_null is less than 250 nanoseconds. Go optimize something that matters.
See how php parses different values. $var is the variable.
strlen($var) = 0 0 1 1 1
is_null($var) = TRUE FALSE FALSE FALSE FALSE
$var == «» = TRUE TRUE TRUE FALSE FALSE
!$var = TRUE TRUE TRUE TRUE FALSE
!is_null($var) = FALSE TRUE TRUE TRUE TRUE
$var != «» = FALSE FALSE FALSE TRUE TRUE
$var = FALSE FALSE FALSE FALSE TRUE
In PHP 7 (phpng), is_null is actually marginally faster than ===, although the performance difference between the two is far smaller.
PHP 5.5.9
is_null — float(2.2381200790405)
=== — float(1.0024659633636)
=== faster by ~100ns per call
PHP 7.0.0-dev (built: May 19 2015 10:16:06)
is_null — float(1.4121870994568)
=== — float(1.4577329158783)
is_null faster by ~5ns per call
A quick test in 2022 on PHP 8.1 confirms there is still no need to micro-optimize NULL checks:
// Comparison Operator
$before = microtime ( true );
$var = null ;
for ( $i = 0 ; $i < 1000000000 ; $i ++) if( $var === null ) <>
>
$after = microtime ( true );
echo ‘ ===: ‘ . ( $after — $before ) . » seconds\n» ;
// Function
$before = microtime ( true );
$var = null ;
for ( $i = 0 ; $i < 1000000000 ; $i ++) if( is_null ( $var )) <>
>
$after = microtime ( true );
echo ‘is_null: ‘ . ( $after — $before ) . » seconds\n» ;
// ===: 4.1487579345703 seconds
// is_null: 4.1316878795624 seconds
For what I realized is that is_null($var) returns exactly the opposite of isset($var) , except that is_null($var) throws a notice if $var hasn’t been set yet.
the following will prove that:
$quirks = array( null , true , false , 0 , 1 , » , «\0» , «unset» );
foreach( $quirks as $var ) if ( $var === «unset» ) unset( $var );
echo is_null ( $var ) ? 1 : 0 ;
echo isset( $var ) ? 1 : 0 ;
echo «\n» ;
>
?>
this will print out something like:
10 // null
01 // true
01 // false
01 // 0
01 // 1
01 // »
01 // «\0»
Notice: Undefined variable: var in /srv/www/htdocs/sandbox/null/nulltest.php on line 8
10 // (unset)
For the major quirky types/values is_null($var) obviously always returns the opposite of isset($var), and the notice clearly points out the faulty line with the is_null() statement. You might want to examine the return value of those functions in detail, but since both are specified to return boolean types there should be no doubt.
A second look into the PHP specs tells that is_null() checks whether a value is null or not. So, you may pass any VALUE to it, eg. the result of a function.
isset() on the other hand is supposed to check for a VARIABLE’s existence, which makes it a language construct rather than a function. Its sole porpuse lies in that checking. Passing anything else will result in an error.
Knowing that, allows us to draw the following unlikely conclusion:
isset() as a language construct is way faster, more reliable and powerful than is_null() and should be prefered over is_null(), except for when you’re directly passing a function’s result, which is considered bad programming practice anyways.
Using === NULL instead of is_null(), is actually useful in loaded server scenarios where you have hundreds or thousands of requests per second. Saving microseconds on a lot of «simple» operations in the entire PHP execution chain usually results in being able to serve more pages per second at the same speed, or lowering your cpu usage. People usually write very bad and slow code.
$var===NULL is much faster than is_null($var) (with the same result)
I did some benchmarking with 10 million iterations:
$a=null;
isset($a); Took: 1.71841216087s
$a==NULL; Took: 1.27205181122s
$a===NULL; Took: 1.2424390316s
is_null($a); Took: 3.70693397522s
$a=5;
isset($a); Took: 1.15165400505s
$a==NULL; Took: 1.41901302338s
$a===NULL; Took: 1.21655392647s
is_null($a); Took: 3.78501200676s
error_reporting(E_ALL&~E_NOTICE);
unset($a);
isset($a); Took: 1.51441502571s
$a==NULL; Took: 16.5414860249s
$a===NULL; Took: 16.1273870468s
is_null($a); Took: 23.1918480396s
Please note, that isset is only included because it gives a good performance in any case; HOWEVER isset is NOT the same, or the opposite.
But you might be able to use isset() instead of null-checking.
You should not use is_null, except when you need a callback-function, or for conformity with is_int, is_float, etc.
I’ve found that for HTTP requests such as POST, is_null isn’t the most reliable choice for checking if empty.
if(trim($var) == «») // do something
>
I think the request does something to the input that makes it definitely not NULL.
Regarding avoidance of NULLs in your MySQL queries, why not use IS NULL and IS NOT NULL in your WHERE clauses.
SELECT *
FROM someDatabase
WHERE someAttribute IS NOT NULL
Проверка на массив, на наличие элементов и на пустоту в PHP
В этой статье будем делать различные проверки массива. В том числе проверим является ли переменная массивом, а так же проверим есть ли у ключей массива пустые значения. Будем двигаться от простого к более сложному. И первое, что можно сделать, это проверить на массив. Для этого нам помоет встроенная в язык PHP функция is_array. Разберем небольшой пример.
$arr = ['id', 'name', 'email']; // Массив элементов if(is_array($arr)){ echo 'Это массив'; }else{ echo 'Это не массив'; }
$arr = [‘id’, ‘name’, ’email’]; // Массив элементов if(is_array($arr))< echo 'Это массив'; >else
Функция вернет true, если это массив и false — если не массив. Это простой пример и сложностей возникнуть не должно. Перейдем к следующему примеру.
Проверка массива на пустоту и пустые элементы в PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$arr = []; if(empty($arr)){ echo 'Массив пустой'; }else{ echo 'Есть элементы'; } // Выведет сообщение, что массив пустой $arr = ['']; if(empty($arr)){ echo 'Массив пустой'; }else{ echo 'Есть элементы'; } // Массив будет не пустым даже если в нем только кавычки.
$arr = []; if(empty($arr))< echo 'Массив пустой'; >else < echo 'Есть элементы'; >// Выведет сообщение, что массив пустой $arr = [»]; if(empty($arr))< echo 'Массив пустой'; >else < echo 'Есть элементы'; >// Массив будет не пустым даже если в нем только кавычки.
Функция empty сработает только в том случае, когда в массиве нет вообще никаких элементов. Поэтому ее лучше не использовать при проверке массивов. В этом случае нам поможет еще одна функция — array_diff. С ее помощью мы сравним исходный массив с другим массивом и в случае расхождения выведем элементы массива, которые не совпадают. Может быть немного сумбурно и не понятно, но давайте разберем на примере.
$arr = ['name', '', 'num', NULL, '', false, 'Alex', '']; var_dump($arr); $new_arr = array_diff($arr, array('', NULL, false)); var_dump($new_arr);
$arr = [‘name’, », ‘num’, NULL, », false, ‘Alex’, »]; var_dump($arr); $new_arr = array_diff($arr, array(», NULL, false)); var_dump($new_arr);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
array(8) { [0]=> string(4) "name" [1]=> string(0) "" [2]=> string(3) "num" [3]=> [4]=> string(0) "" [5]=> [6]=> string(4) "Alex" [7]=> string(0) "" } array(3) { [0]=> string(4) "name" [2]=> string(3) "num" [6]=> string(4) "Alex" }
array(8) < [0]=>string(4) «name» [1]=> string(0) «» [2]=> string(3) «num» [3]=> [4]=> string(0) «» [5]=> [6]=> string(4) «Alex» [7]=> string(0) «» > array(3) < [0]=>string(4) «name» [2]=> string(3) «num» [6]=> string(4) «Alex» >
Функция пропустит все пустые элемент массива, в том числе NULL и false и выведет только те, в которых что-то есть. Мы так же можем проверить какой именно элемент массива был пустой с помощью цикла for.
$arr = ['name', '', 'num', NULL, '', false, 'Alex', '']; for($i=0; $i count($arr); $i++) { if (empty($arr[$i])){ echo "Элемент $i пустой"."
"; }else{ echo "Элемент $i не пустой"."
"; } }
Элемент 0 не пустой Элемент 1 пустой Элемент 2 не пустой Элемент 3 пустой Элемент 4 пустой Элемент 5 пустой Элемент 6 не пустой Элемент 7 пустой
Элемент 0 не пустой Элемент 1 пустой Элемент 2 не пустой Элемент 3 пустой Элемент 4 пустой Элемент 5 пустой Элемент 6 не пустой Элемент 7 пустой
Но массивы бывают разные, в том числе с ключами и значениями. И цикл for в этом случае тоже справится точно так же.
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>'']; for($i=0; $i count($arr); $i++) { if (empty($arr[$i])){ echo "Элемент $i пустой"."
"; }else{ echo "Элемент $i не пустой"."
"; } }
При желании можно принудительно удалить ключи массива, в которых пустые значения. Для этого задействуем цикл foreach и функцию unset.
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>'']; var_dump($arr); foreach ($arr as $key => $value) { if (empty($value)) { //проверrf на пустоту unset($arr[$key]); // Удаляем ключ массива } } var_dump($arr);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
array(4) { ["age"]=> int(34) ["name"]=> string(4) "Ivan" ["city"]=> string(0) "" ["number"]=> string(0) "" } array(2) { ["age"]=> int(34) ["name"]=> string(4) "Ivan" }
array(4) < ["age"]=>int(34) [«name»]=> string(4) «Ivan» [«city»]=> string(0) «» [«number»]=> string(0) «» > array(2) < ["age"]=>int(34) [«name»]=> string(4) «Ivan» >
Проверить наличие элемента в массиве
Для этих целей подойдет функция in_array. Она проверяет на присутствие в массиве значения.
$arr=['age'=> 34,'name'=>'Ivan','city'=>'', 'number'=>'']; if (in_array('Ivan', $arr)) { echo 'YES'; }else{ echo 'NO'; }
$arr=[‘age’=> 34,’name’=>’Ivan’,’city’=>», ‘number’=>»]; if (in_array(‘Ivan’, $arr)) < echo 'YES'; >else
Первым аргументом указываем что будем искать, вторым — где. На этом по работе с массивами окончен. Надеюсь, что вам в нем все было понятно. Но если остались какие-то вопросы, задавайте их в комментариях.
Проверить наличие пустого массива в PHP
В этом посте мы обсудим, как определить, пуст ли массив в PHP.
1. Использование empty() функция
Переменная считается пустой в PHP, если она не существует или если ее значение равно false. empty() Функция возвращает true, если переменная пуста, иначе false. Вы можете использовать empty() функция для проверки пустых массивов. Он возвращает true, если в массиве нет элементов, и false в противном случае.
The empty() функция вернет true для всех ложных значений (например, false, 0, «», null, array() и т. д.). Если вы специально хотите проверить наличие пустых массивов, вы можете сначала проверить массив, используя is_array() функция.
2. Использование оператора отрицания
Поскольку пустой массив в PHP является ложным, вызов empty() можно заменить оператором логического отрицания ( ! ). Оператор логического отрицания неявно преобразует свой операнд в тип bool и возвращает логическое значение, противоположное значению преобразованного операнда. Как и в случае с empty() функцию, вы можете определить, является ли данная переменная массивом с is_array() функция.
3. Использование оператора сравнения тождеств
Кроме того, вы можете использовать операторы сравнения идентификаторов ( === а также !== ) для проверки наличия пустых массивов в PHP. Выражение $a === $b возвращает истину, если $a равно $b , и они одного типа. Вы можете сравнить свою переменную с array() построить с === оператор, который возвращает true только для пустых массивов и false в противном случае.
Начиная с PHP 5.4, вы можете использовать синтаксис короткого массива [] . Он работает аналогично тому, как array() построить, но позволяет избежать накладных расходов на вызов функции.
4. Использование count() функция
Вы также можете подсчитать общее количество элементов в массиве. count() или же sizeof() будет работать для массивов или объектов, которые реализуют Countable. Для других ложных значений count() выдает фатальную ошибку: Uncaught TypeError: count(): первый аргумент ($value) должен иметь тип Countable|массив.
5. Использование array_filter() функция
Если вам нужно проверить, содержит ли массив все ложные значения, вы можете передать свой массив в array_filter() функцию и сравнить полученный массив с array() построить или [] синтаксис с === оператор. array_filter() функция фильтрует элементы массива, используя функцию обратного вызова. Если обратный вызов не указан, все ложные значения будут удалены из массива. Это демонстрирует следующее решение: