PHP如何遍历嵌套的JSON对象?

时间:2019-07-17 20:12:21

标签: php arrays json

1. Extracted from my laravel controller:
        ..
        ..
        $data = json_decode($response, true);
        return $data;
        ..
        ..
        return view('homepage')->with('homeExclusives', $homeExclusives);

  1. 这里是返回数据的样本,只是一个简短的版本,因为返回的feed很大,但这可以使您了解其结构方式。
     array(4) {
       ["success"]=> bool(true) 
       ["status"]=> int(200) 
       ["bundle"]=> array(2) {
           [0]=> array(631) {
               ["StreetDirPrefix"]=> string(2) "SW" 
               ["DistanceToStreetComments"]=> NULL
           }

           [1]=> array(631) { 
               ["StreetDirPrefix"]=> string(2) "NE" 
               ["DistanceToStreetComments"]=> NULL
              }
      }
  1. 我需要从[0]和[1]中提取“ StreetDirPrefix”值,但是我总是会遇到错误。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

对于您示例中的数据,您可以使用array_column并指定StreetDirPrefix作为列键。

$res = array_column($array["bundle"], "StreetDirPrefix");
print_r($res);

Php demo

答案 1 :(得分:0)

在不知道您遇到什么错误的情况下,我的解决方案将是这样的:

<?php
if (is_array($data) && is_array($data["bundle"]) ) {
    foreach ($data["bundle"] as $tmpKey => $tmpVal) {
        if (isset($tmpVal["StreetDirPrefix"])) {
            echo $tmpKey." => ".$tmpVal["StreetDirPrefix"]."\n";
        }
    }
}
?>

我一直喜欢验证数组,因此,如果您的$data变量或$data["bundle"]子节不是数组,那么您将一无所获。甚至没有错误。

我在这里有一个工作示例: https://www.seeque-secure.dk/demo.php?id=PHP+how+to+loop+over+nested+JSON+Object

编辑:

(如果我了解您的话) 验证阵列后,您要做的就是重复内部验证,如下所示:

<?php
if (is_array($data) && is_array($data["bundle"]) ) {
    foreach ($data["bundle"] as $tmpKey => $tmpVal) {
        if (isset($tmpVal["StreetDirPrefix"])) {
            echo $tmpKey." => ".$tmpVal["StreetDirPrefix"]."\n";
        }
        if (isset($tmpVal["UnparsedAddress"])) {
            echo $tmpVal["UnparsedAddress"]."\n";
        }
        if (isset($tmpVal["SalePrice"])) {
            echo $tmpVal["SalePrice"]."\n";
        }

        //...... ect.....

    }
}

?>