你可以使用这样的函数:
<?php
function isNestedArrayEmpty($parentArray, $parentKey, $childKeys)
{
if (empty($parentArray))
return TRUE;
$node = $parentArray[$parentKey];
if (empty($node))
return TRUE;
if (!empty($childKeys))
{
foreach ($childKeys as $key)
{
if (empty($node[$key]))
return TRUE;
$node = $node[$key];
}
}
return false;
}
?>
然后调用该函数是这样的:
if (isNestedArrayEmpty($container, 'progress', $arr_1)) { ... }
if (isNestedArrayEmpty($container, 'progress', $arr_2)) { ... }
if (isNestedArrayEmpty($container, 'progress', $arr_3)) { ... }
这是一个完整的工作示例,使用您提供的数组。 (注意:我删除了$arr_1
,$arr_2
和$arr_3
的初始化程序中按键周围的方括号,因为这似乎是语法错误)。从上面的例子
<html>
<body>
<?php
function isNestedArrayEmpty($parentArray, $parentKey, $childKeys)
{
if (empty($parentArray))
return TRUE;
$node = $parentArray[$parentKey];
if (empty($node))
return TRUE;
if (!empty($childKeys))
{
foreach ($childKeys as $key)
{
if (empty($node[$key]))
return TRUE;
$node = $node[$key];
}
}
return false;
}
$arr_1 = array(0 => 'setup');
$arr_2 = array(0 => 'artwork', 1 => 'path');
$arr_3 = array(0 => 'artwork', 1 => 'color');
$container = array(
'progress' => array(
'setup' => 'complete',
'artwork' => array(
'path' => 'complete',
'color'=> '',
)
)
);
echo '$container[\'progress\'] empty?: ';
if (isNestedArrayEmpty($container, 'progress', NULL)) {
echo 'Yes';
} else {
echo 'No';
}
echo '<br>';
echo '$container[\'progress\'][\'setup\'] empty?: ';
if (isNestedArrayEmpty($container, 'progress', $arr_1)) {
echo 'Yes';
} else {
echo 'No';
}
echo '<br>';
echo '$container[\'progress\'][\'artwork\'][\'path\'] empty?: ';
if (isNestedArrayEmpty($container, 'progress', $arr_2)) {
echo 'Yes';
} else {
echo 'No';
}
echo '<br>';
echo '$container[\'progress\'][\'artwork\'][\'color\'] empty?: ';
if (isNestedArrayEmpty($container, 'progress', $arr_3)) {
echo 'Yes';
} else {
echo 'No';
}
echo '<br>';
?>
</body>
</html>
输出:
$container['progress'] empty?: No
$container['progress']['setup'] empty?: No
$container['progress']['artwork']['path'] empty?: No
$container['progress']['artwork']['color'] empty?: Yes
优雅的解决方案,谢谢Felix! –