Как проверить, содержит ли многомерный массив только пустые значения?

Я огляделся и не мог найти ответ на этот вопрос, поэтому мне интересно, могу ли я содержать такой массив.

$array['foo']['bar'][1] = ''; $array['foo']['bar'][2] = ''; $array['foo']['bar'][3] = ''; $array['foo']['bar'][4] = ''; 

Как проверить, все ли значения пустые? Я попытался сделать следующее:

 if (empty($array['foo']['bar'])) { // Array empty } 

Но, как и ожидалось, это не сработало.

Как я могу это сделать?

Если вы хотите проверить, все ли значения, которые вы можете использовать,

  if(call_user_func_array("isset", $array['foo']['bar'])) 

Для чего вы хотите сделать, хотя вы можете использовать уменьшение массива с закрытием

  if(array_reduce($array, function(&$res, $a){if ($a) $res = true;})) 

Обратите внимание, что это будет работать только в php 5.3+

$array['foo']['bar'] не пуст, потому что это фактически array(1=>'',2=>'',3=>'',4=>'') .

Вам нужно будет сделать цикл foreach на нем, чтобы проверить, действительно ли он пуст.

 $arr_empty = true; foreach ($array['foo']['bar'] as $arr) { if (!empty($arr)) { $arr_empty = false; } } //$arr_empty is now true or false based on $array['foo']['bar'] 

Короткий вариант:

 if (empty(implode($array['foo']['bar']))) { // is empty } 

Обратите внимание, что некоторые одиночные значения можно считать пустыми. См. Empty () .