从JSON中解析特定部分

时间:2017-02-28 00:10:03

标签: php html json api themoviedb-api

我目前正在与德国电影相关的网站上工作。 由于我是编码新手,我已经购买了一个解析来自他们的电影数据的脚本。

以下是正在解析的完整JSON响应:

https://api.themoviedb.org/3/movie/283995?api_key=9ff892d334d361aac74e06ac0e1acb96&append_to_response=releases

对该脚本的一点研究表明,标准的release_date由以下语言解析:

public function getReleaseDate()
{
    return (array_key_exists('release_date', $this->raw) ? $this->raw['release_date'] : $this->raw['first_air_date']);
}

这很好用,给了我" 2017-04-25"。但在JSON响应中,我想过滤掉特定于区域的发布日期。我特别想要" release_date"来自这一部分:

{
certification: "",
iso_3166_1: "DE",
primary: false,
release_date: "2017-04-27"
},

TL; DR:我需要一个以我只接收" release_date"的方式解析JSON响应的函数。德国版本(" 2017-04-27")。

这是我试过的:

 public function getReleaseDateLocalized()
{
    $date = '';
    if (isset($this->raw['releases']['countries']))
    {
        $dates = $this->raw['releases']['countries'];
    }
    elseif(isset($this->raw['release_date']))
    {
        return $this->raw['release_date'];
    }
    else
    {
        return '0000-00-00';
    }
    foreach($this->raw[$dates] as $locdates)
    {
        if (is_array($locdates))
        {
            $de .= array_search("DE", $locdates);
            $date .= raw[$de]['release_date'];

        }
        else
        {
            $date .= $this->raw['release_date'];                
        }       
    }
    return $date;
}

1 个答案:

答案 0 :(得分:1)

public function getReleaseDate()
{
  $countries = $this->raw['releases']['countries'];
  $de = array_search('DE', array_column($countries, 'iso_3166_1'));

  return $countries[$de]['release_date'];
}