Проверяем пустой массив или нет
Одномерные массивы
В большинстве случаев для одномерных массивов подойдет такой код:
if( empty( array_filter( $arr ) ) ) {
// массив пустой
}
Показать код
Здесь предполагаем, что переменная $arr содержит проверяемый массив.
А теперь подробнее.
Для простого одномерного массива можно проверить так:
$arr = [];
if( ! $arr ) {
// массив пустой
}
Показать код
$arr = [];
if( empty( $arr ) ) {
// массив пустой
}
Показать код
В первом случае, если переменная $arr вообще не задана, то получим предупреждение E_NOTICE
. Во втором случае такого предупреждения не будет.
Но если в массиве есть индексы, пусть даже и с пустыми значениями [ 0 => '', 1 => '' ]
, оба этих кода покажут, что массив не пустой. Для этого случая надо использовать функцию array_filter
.
$arr = [ 0 => '', 1 => '' ];
if( empty( array_filter( $arr ) ) ) {
// массив пустой
}
Показать код
Многомерные массивы
Для многомерных массивов ни один из вариантов выше работать не будет даже в самом простом случае, когда массив выглядит допустим так:
[0] =>
[1] => [
[0] =>
]
То есть первый элемент пустой, а второй элемент содержит пустой массив.
Многомерные массивы с произвольной структурой можно проверить так:
$is_empty = true;
$new_arr = array_walk_recursive( $arr, function( $val ) use ( &$is_empty ) {
if( ! empty( $val ) ) {
$is_empty = false;
}
});
if( $is_empty ) {
// массив пустой
}
Показать код
Здесь надо иметь ввиду, что даже вот такой массив будет признан пустым:
$arr = [
0 => '',
1 => [
0 => 0,
1 => [
'few' => '0',
2 => false
]
]
];
Если нужны более жесткие условия проверки массива на пустоту, то меняем код в строке 3.