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

Одномерные массивы

В большинстве случаев для одномерных массивов подойдет такой код:

Скопировано
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.