破碎的php数组索引

时间:2015-09-30 19:13:07

标签: php arrays json

这里肯定有一些显而易见的事我在做错了,但我花了好几个小时试图解决这个问题,这没什么意义。

<?php
   date_default_timezone_set('America/New_York');
   $json = file_get_contents('https://www.govtrack.us/api/v2/vote/?congress=114&chamber=house&session=2015&order_by=-created');
   $obj = json_decode( $json,true);
   $bills = $obj['objects'];

foreach($bills as $b){
    print_r($b);
    print_r($b['category']);    
    print_r($b['title']); ///wtf.   
}
 ?>

json请求返回的数组包含类别和标题的索引,但它为title返回NULL。由于某种原因,json数组中的其他几个元素返回NULL。 PHP返回未定义的索引错误,但索引已明确定义。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:3)

title索引位于related_bill下,而不是主objects数组。

这应该有效:

foreach($bills as $b){
    print_r($b);
    print_r($b['category']);    
    print_r($b['related_bill']['title']);
}

答案 1 :(得分:2)

  

指数已明确定义。

不,不是。我看了一下URL和&#34; title&#34;不是&#34;对象&#34;中的对象的索引,而是&#34; related_bill&#34;

中的对象的索引

使用以下方式访问它:

$b['related_bill']['title']

答案 2 :(得分:1)

  

试试这段代码在你的json中,不是&#39;标题&#39;索引,但它的&#34;标题&#34; in&#34; related_bill&#34;

 <?php
       date_default_timezone_set('America/New_York');
       $json = file_get_contents('https://www.govtrack.us/api/v2/vote/?congress=114&chamber=house&session=2015&order_by=-created');
       $obj = json_decode( $json,true);
       $bills = $obj['objects'];

    foreach($bills as $b){
        print_r($b);
        print_r($b['category']);    
        print_r($b['related_bill']['titles']); ///wtf.   
    }
     ?>
  

将$ b [&#39;标题&#39;]替换为$ b [&#39; related_bill&#39;] [&#39; titles&#39;]