Функция 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) ? 'истина' : 'ложь'; // истина ?>
<?php
$a = array('a','b','c');
unset($a[1]); //удалим элемент с ключем - 1
print_r($a);
//увидем на экране : Array ( [0] => a [2] => c )
?>
Она удаляет первый элемент из массива и сохраняет его в переменной.
<?php
$myarray = array("Apples", "Oranges", "Pears");
$fruit = array_shift($myarray);
echo $fruit; // Apples
print_r($myarray); // Oranges and Pears will bedisplayedwithout Apples
?>
удаляет последний элемент из массива.
<?php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_pop($stack); print_r($stack); //увидим на экране : Array ( [3] => a [5] => b ) ?>
данная функция так же хорошо подходит для удаления пустого массива
<?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(), где перечислить все элементы, которые мы считаем «нулевыми».
<?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 )
Этот вариант позволяет задать собственное определение того, что мы считаем пустым элементом.
удаляем повторяющиеся элементы массива
<?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_REGULAR — сравнивать без преобразования типа элементов,SORT_NUMERIC — сравнивать как числа (т.е. пытаясь преобразовать в число),SORT_STRING — сравнивать как строкиSORT_LOCALE_STRING — сравнивать как строки, учитывая выбранный набор символов (т.н. locale).
По умолчанию используется — 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 )
?>
При сравнении все элементы преобразовывались в численному типу скаляра, что неизменно давало значение ноль. Так у нас остался только первый элемент.