PHP JSON响应 - 遍历多个数组

时间:2015-07-24 10:10:26

标签: php arrays json

我正在运行一个返回JSON响应的rest api调用,我想在PHP中处理它。响应是一系列数组,格式如下:

   [
  {
    "id": "auc48x87ts3oE9l6F0h7",
    "label": "Facebook",
    "linkUrl": "https://someurl.com",
    "logoUrl": "https://someurl.com/facebook.png",
    "appName": "facebook",
  },
  {
    "id": "auc4bd9we0llNsFtz0h7",
    "label": "Bank of America CashPro",
    "linkUrl": "https://someurl.com",
    "logoUrl": "https://someurl.com/bankofamericacashpro.png",
    "appName": "bankofamericacashpro",

  }]

我想遍历整个响应,我可以得到一个很好的appName值列表。

在我的代码中,我无法在第一个应用程序的所有应用程序中检索应用程序名称,永远不会找到任何其他应用程序 -

$output = curl_exec($curl);

  // have to get rid of leading trash on return for json_decode to work
    $output = "[" . strstr( $output, "{" ) . "]";

    //decode
    $jsonObject = json_decode($output, true);

    //get app name
    $appname =  $jsonObject['appName'];

我的问题是,为什么$ appName变量不存储任何值?一旦修复了,我该如何创建一个循环来响应响应中的每个数组?这里的foreach循环是否合适?

非常感谢

2 个答案:

答案 0 :(得分:1)

你必须迭代

$jsonObject = json_decode($output, true);
foreach($jsonObject as $obj){

echo $obj['appName'];
}

答案 1 :(得分:0)

  

// have to get rid of leading trash on return for json_decode to work $output = "[" . strstr( $output, "{" ) . "]";

不,你不要!你接收了[]所针对的一系列对象(例如:[1,2,{"id"=42},4]),所以你应该将它解析为数组,如第一句所述