Как проверить, содержит ли многомерный массив только пустые значения?
Я огляделся и не могу найти ответ на этот вопрос, поэтому мне интересно, есть ли у меня такой массив..
$array['foo']['bar'][1] = '';
$array['foo']['bar'][2] = '';
$array['foo']['bar'][3] = '';
$array['foo']['bar'][4] = '';
Как я могу проверить, все ли значения пусты? Я попытался сделать следующее:
if (empty($array['foo']['bar'])) {
// Array empty
}
Но, как и ожидалось, это не сработало.
Как я могу это сделать?
3 ответа:
Если вы хотите проверить, все ли значения, где заполнены, вы можете использовать
if(call_user_func_array("isset", $array['foo']['bar']))
Для того, что вы хотите сделать, хотя вы могли бы использовать array reduce с закрытием
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']
Короткой альтернативой было бы:
Обратите внимание, что некоторые единичные значения могут рассматриваться как пустые. Смотрите empty () .if (empty(implode($array['foo']['bar']))) { // is empty }