首页 > 解决方案 > PHP 数组 foreach 项

问题描述

我在获取多级数组中的值时遇到问题。

这是我用 CURL 抓取并放入变量的 JSON。

{
  "id": 454626,
  "results": [
    {
      "iso_3166_1": "SK",
      "release_dates": [
        {
          "certification": "U",
          "iso_639_1": "sk",
          "note": "",
          "release_date": "2020-02-20T00:00:00.000Z",
          "type": 3
        }
      ]
    },
    {
      "iso_3166_1": "DE",
      "release_dates": [
        {
          "certification": "6",
          "iso_639_1": "",
          "note": "",
          "release_date": "2020-02-13T00:00:00.000Z",
          "type": 3
        }
      ]
    },
    {
      "iso_3166_1": "TW",
      "release_dates": [
        {
          "certification": "G",
          "iso_639_1": "",
          "note": "",
          "release_date": "2020-02-21T00:00:00.000Z",
          "type": 3
        }
      ]
    }
  ]
}

这是我遇到问题的 PHP 代码。

$id_tmdb = $row[id_tmdb];

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.themoviedb.org/3/movie/$id_tmdb/release_dates?api_key=API-KEY",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET"
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

$result = json_decode($response, true);


foreach($result[results][release_dates] as $key=>$val){
    echo "$val[release_date]";
}

我正在尝试获取,release_date但它只是显示为空白。

我有另一个页面以相同的方式格式化,所以我不确定为什么它不起作用....谢谢你的帮助。

标签: phparraysjson

解决方案


您的$result['results']值也是一个数组,您需要迭代它以及release_dates数组:

foreach($result['results'] as $results) {
    foreach ($results['release_dates'] as $val){
        echo "$val[release_date]\n";
    }
}

输出(对于提供的示例 JSON):

2020-02-20T00:00:00.000Z
2020-02-13T00:00:00.000Z
2020-02-21T00:00:00.000Z

3v4l.org 上的演示


推荐阅读