Я огляделся и не мог найти ответ на этот вопрос, поэтому мне интересно, могу ли я содержать такой массив.
$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 () .