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

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

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

<?php
$name = 'Владимир';

if(isset($name))
echo 'Имя задано';
else
echo 'Имя не задано';

// Не забываем про тернарный оператор :)
echo isset($name) ? 'Имя задано' : 'Имя не задано';
?>

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

<?php
$name = 'Василиса';
$age = 20;

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

В PHP 7 появился Null-коалесцентный оператор ??. Он позволяет получить значение переменной, если она есть, а иначе - значение по-умолчанию:

<?php
// Как было раньше
$name = isset($user_name) ? $user_name : 'Безымянный';

// Как в PHP 7
$name = $user_name ?? 'Безымянный';
?>

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

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

<?php
$var1 = 15;
$var2 = '0';
echo empty($var1) ? 'пустая' : 'не пустая', '<br>'; // выведет 'не пустая'
echo empty($var2) ? 'пустая' : 'не пустая'; // выведет 'пустая', поскольку '0' приводится к false
?>

Поведение isset() и empty() противоположно друг другу: первая возвращает true при существовании переменной, вторая - при отсутствии.

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

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

функция array_key_exists() возвращает true ( в отличии от isset()) если элемент массива существует даже со значением null:

<?php
$arr = [0 => null];
echo isset($arr[0]) ? 'истина' : 'ложь'; // ложь
echo array_key_exists(0, $arr) ? 'истина' : 'ложь'; // истина
?>

Удаление элементов массива

Удаление функцией unset().

	       
<?php
$a = array('a','b','c');
unset($a[1]); //удалим элемент с ключем - 1
print_r($a);
//увидем на экране : Array ( [0] => a [2] => c ) 
?>


Функция array_shift:

Она удаляет первый элемент из массива и сохраняет его в переменной.

	        <?php
	        
	        $myarray = array("Apples", "Oranges", "Pears");
	        $fruit = array_shift($myarray);  
	        echo $fruit; // Apples
	        print_r($myarray);  // Oranges and Pears will bedisplayedwithout Apples
	        
	        ?>
	        

функция array_pop().

удаляет последний элемент из массива.

<?php
$stack = array(3 => 'a', 5 => 'b', 'third element' => 'c');
$elm = array_pop($stack);
print_r($stack);
//увидим на экране : Array ( [3] => a [5] => b ) 
?>

функция empty()

данная функция так же хорошо подходит для удаления пустого массива

<?php
$stack = array(3 => 'a', 5 => 'b', '3rd' => 'c', array(), null, false, 0, '', '0', '00');
foreach ($stack as $k => $v) 
if (empty($v)) unset($stack[$k]);
print_r($stack);
//увидим на экране : Array ( [3] => a [5] => b [3rd] => c [12] => 00 )  
?>

функция array_diff()

Если проверка массива по-элементно кажется вам не оптимальной, то можно воспользоваться функций сравнения массивов — array_diff(), где перечислить все элементы, которые мы считаем «нулевыми».

<?php
$stack = array(3 => 'a', 5 => 'b', '3rd' => 'c', array(), null, false, 0, '', '0', '00', ' ');
$stack = array_diff($stack, array(array(), null, false, 0, '', '0', '00', ' '));
print_r($stack);
//увидим на экране : Array ( [3] => a [5] => b [3rd] => c )  

Этот вариант позволяет задать собственное определение того, что мы считаем пустым элементом.

функция — array_unique().

удаляем повторяющиеся элементы массива

<?php
$stack = array('a', 'b', 'b', 'c', 'c', 0, '0');
$stack = array_unique($stack);
print_r($stack);
//увидим на экране : Array ( [0] => a [1] => b [3] => c [5] => 0 )   
?>

Видим, что функция удалила из массива повторяющиеся элементы. На самом деле у функции есть ещё один параметр, который указывает как сравнивать элементы:

По умолчанию используется — SORT_STRING. Поменяем в предыдущем примере тип на SORT_NUMERIC:

<?php
$stack = array('a', 'b', 'b', 'c', 'c', 0, '0');
$stack = array_unique($stack, SORT_NUMERIC);
print_r($stack);
//увидим на экране : Array ( [0] => a )   
?>

При сравнении все элементы преобразовывались в численному типу скаляра, что неизменно давало значение ноль. Так у нас остался только первый элемент.

использовалась статья Pragramulin.ru