【问题标题】:Pull data from nested json loop php从嵌套的json循环php中提取数据
【发布时间】:2015-04-22 08:29:21
【问题描述】:

好的,我已经为此奋斗了两天了!!这是我的 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"
        }
    ]
},

我正在尝试从顶级数组(名为“会议”)中提取开始时间,并从二级数组(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['meetings'] as $key => $value){

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

} 这会为 play_url 提取未定义的索引。与在 ['play_url'] 之前引用 ['recording_files'] 的代码相同

变化 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>';

} 这给了我一个未定义的 ['recording_files'] 索引和一个 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人!

【问题讨论】:

  • 结构有问题。打开 [ 和右括号不匹配
  • 您将 json 存储在文件中或通过 url ?
  • @user4035 是的,他们确实... recording_files 是一个对象数组。
  • 好的,每次在 json 中打开方括号 [ 时,都会启动一个数组本身。因此,您应该访问$aha['meetings'][0]['recording_files'][0]['play_url'],您可以在其中将 0 替换为相应的索引或通过循环访问。如果您不确定数组在哪里,只需在 json_decode 上创建一个 var_dump
  • 所以使用 0 会从 0 记录中拉取数据。我想弄清楚如何通过循环访问它。

标签: php json foreach nested-loops


【解决方案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>";
    }
}

【讨论】:

  • 修复它的代码是:$aha = json_decode($response,true); foreach ($aha['meetings'] as $key => $value){ echo '

    Time : '.$value['start_time'].'

    录制
    '; }
【解决方案2】:

如果真的有$aha['meetings'](你不显示它),那么使用第二个foreach中的值而不是键:

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

【讨论】:

    【解决方案3】:

    修复它的最终代码。

            $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 片段的正确格式的问题。 非常感谢大家!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2019-02-18
      • 2021-10-05
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多