从 PHP 中的嵌套数组中获取所有值?

Ror*_*ory 1 php

对于这个嵌套数组:

$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)

  • `$all` 将是一个空数组,除非你把它放在闭包 `function ($value, $key) use (&amp;$all)` 的 `use` 部分并将它从主要参数中删除,只是说。因为 array_walk_recursive 不通过引用传递额外的参数,因此你不能更新它超出范围。 (2认同)