あなたはこのような関数を使用できます。
<?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
エレガントなソリューション、感謝フェリックス! –