如何在不使用php中的多个foreach的情况下从嵌套数组(json格式)获取值

时间:2018-04-04 14:10:36

标签: php arrays json laravel

我想以json格式获取所有id值。

{
"1": {
  "name": "test",
  "followup": {
    "1": {
       "id": "98",
       "followup": {
          "1": {
           "id": "93",
           "followup": {
            "1": {
             "id": "174"
            },
          }
        }
       }
     }
  }
 }
}

我可以通过使用嵌套的foreach来实现这一点。但是现在“跟进”键出现在3中,但它可能是6,7,因此我们无法添加6,7 foreach

1 个答案:

答案 0 :(得分:4)

您可以使用array_walk_recursive(),例如(DEMO):

$ids = array();
$data = json_decode($str, true);

array_walk_recursive($data, function($v, $k) use (&$ids) {
    if ($k === 'id') {
        $ids[] = $v;
    }
}); 

var_dump($ids);

这基本上一次遍历每个索引1,并将键与键id匹配,如果匹配,则捕获值。