从嵌套的json循环php中提取数据

时间:2015-02-20 15:39:08

标签: php json foreach nested-loops

好的,我已经和你打了两天了!!这是我的Json结构。 [

{
    "uuid":"/random number==",
    "meeting_number":7196503037,
    "host_id":"random number",
    "topic":"My's Personal Meeting Room",
    "start_time":"2015-01-06T22:01:07Z",
    "timezone":"America/Denver",
    "duration":56,
    "total_size":378080,
    "recording_count":1,
    "recording_files":[
        {
            "id":"long number",
            "meeting_id":"/NS90bsSTLeGzo6cT0nwXw==",
            "recording_start":"2015-01-06T22:01:09Z",
            "recording_end":"2015-01-06T22:01:14Z",
            "file_size":378080,
            "play_url":"https://myurl"
        }
    ]
},

我正在尝试从顶级数组(名为' meetings')和第二级数组中的Play Url(recording_files)中拉出开始时间。我正在使用json_decode将文件解码为数组。

我尝试过在这个网站上发现的很多变化,似乎没有任何内容可以访问该网址。 变化1      $ aha = json_decode($ response,true);

        foreach ($aha['meetings'] as $key => $value){
            foreach($key['recording_files'] as $subkey => $newvalue){


        echo '<p>Time : '.$value['start_time'].'</p>
  <a href="'.$newvalue['play_url'].'">Recording</a><br>';

}} 这会在foreach中引入一个无效的参数。

变化2             foreach($ aha [&#39; meeting&#39;] as $ key =&gt; $ value){

        echo '<p>Time : '.$value['start_time'].'</p>
  <a href="'.$value['play_url'].'">Recording</a><br>';

} 这为play_url提取了未定义的索引。与在[&#39; play_url&#39;]之前放置[&#39; recording_files&#39;]的相同代码一样,

变化3: 然后我尝试放弃第一级,只是从第二级提取数据:              $ aha = json_decode($ response,true);

        foreach ($aha['meetings']['recording_files'] as $key => $value){


        echo '<p>Time : '.$value['recording_start'].'</p>
  <a href="'.$value['play_url'].'">Recording</a><br>';

} 这给了我一个关于[&#39; recording_files&#39;]的未定义索引和一个foreach错误。

变化4。      $ aha = json_decode($ response,true);

        foreach ($aha['meetings'] as $key => $value){
         $link=$key['recording_files'];

        echo '<p>Time : '.$value['start_time'].'</p>
  <a href="'.$link['play_url'].'">Recording</a><br>';

} 这让我最接近 - 没有错误但没有链接。我认为这里的代码是看到该字段但只是没有从中提取数据......

请帮助一个新手json人!!

3 个答案:

答案 0 :(得分:0)

如果确实存在$aha['meetings'](您不显示),请使用第二个foreach中的值而不是键:

foreach($aha['meetings'] as $value){
    foreach($value['recording_files'] as $newvalue){

答案 1 :(得分:0)

修复它的最终代码。

        $aha = json_decode($response,true);

        foreach ($aha['meetings'] as $key => $value){           

        echo '<p>Time : '.$value['start_time'].'</p>
       <a href="'.$value['recording_files'][0]{'play_url'}.'">Recording</a><br>';}

只需找到引用play_url片段的正确格式即可。 非常感谢大家!

答案 2 :(得分:-1)

修改

如果您的数据如下所示:

$str = "{\"meetings\":[{
    \"uuid\":\"/random number==\",
    \"meeting_number\":7196503037,
    \"host_id\":\"random number\",
    \"topic\":\"My's Personal Meeting Room\",
    \"start_time\":\"2015-01-06T22:01:07Z\",
    \"timezone\":\"America/Denver\",
    \"duration\":56,
    \"total_size\":378080,
    \"recording_count\":1,
    \"recording_files\":[
        {
            \"id\":\"long number\",
            \"meeting_id\":\"/NS90bsSTLeGzo6cT0nwXw==\",
            \"recording_start\":\"2015-01-06T22:01:09Z\",
            \"recording_end\":\"2015-01-06T22:01:14Z\",
            \"file_size\":378080,
            \"play_url\":\"https://myurl\"
        }
    ]
}]}";


$json = json_decode($str);
$res = $json->{'meetings'};

foreach($res as $keys){
    echo $keys->{'start_time'}."<br>";
    foreach ($keys->{'recording_files'} as $data){
        echo $data->{'play_url'}."<br>";
        echo $data->{'recording_start'}."<br>";
    }
}