对于这个嵌套数组:
$status = array(
"house" => "OK",
"car" => array(
"car1" => "OK",
"car2" => "ERROR"
),
"boat" => "OK"
);
Run Code Online (Sandbox Code Playgroud)
我想知道某个值“ERROR”是否在数组中至少存在一次。我不在乎它与什么键相关联,我只想知道 $status 数组中是否包含“错误”状态。
除了使用嵌套的 for 循环迭代元素之外,还有更简洁的方法吗?
小智 5
您可以使用该函数array_walk_recursive()获取任何级别的嵌套数组的所有值。
https://secure.php.net/manual/en/function.array-walk-recursive.php
<?php
$status = array(
"house" => "OK",
"car" => array(
"car1" => "OK",
"car2" => "OK"
),
"boat" => "OK"
);
$required = array();
array_walk_recursive($status, function ($value, $key) use (&$required){
$required[] = $value;
}, $required);
print '<pre>';
print_r($required);
print '</pre>';
?>
Run Code Online (Sandbox Code Playgroud)
输出:
Array
(
[0] => OK
[1] => OK
[2] => OK
[3] => OK
)
Run Code Online (Sandbox Code Playgroud)