JSON PHP无法浏览嵌套数组

时间:2013-07-22 20:45:23

标签: php json

我正试图分析一些政府数据。这是JSON

 {
"results": [
    {
        "bill_id": "hres311-113",
        "bill_type": "hres",
        "chamber": "house",
        "committee_ids": [
            "HSHA"
        ],
        "congress": 113,
        "cosponsors_count": 9,
        "enacted_as": null,
        "history": {
            "active": false,
            "awaiting_signature": false,
            "enacted": false,
            "vetoed": false
 }

这是php

foreach($key['results'] as $get_key => $value){
  $bill_buff .= 'Bill ID: ' .   $value['bill_id'] . '<br/>';
  $bill_buff .= 'Bill Type: ' . $value['bill_type'] . '<br/>';
  $bill_buff .= 'Chamber: ' .   $value['chamber'] . '<br/>';
  $bill_buff .= 'Committee IDs: ' . $value['committee_ids'] . '<br/>';
  $bill_buff .= 'Congress: ' .  $value['congress'] . '<br/>';
  $bill_buff .= 'Cosponsor Count: ' .   $value['cosponsors_count'] . '<br/>';
  $bill_buff .= 'Enacted As: ' .    $value['enacted_as'] . '<br/>';
  $bill_buff .= 'History: {' . '<br/>';
  $history = $value['history'];
  $bill_buff .= 'Active: ' .    $history['active'] . '<br/>';
  $bill_buff .= 'Awaiting Signature: ' .    $history['awaiting_signature'] . '<br/>';
  $bill_buff .= 'Enacted: ' .   $history['enacted'] . '<br/>';
  $bill_buff .= 'Vetoed: ' .    $history['vetoed'] . '}<br/>';
}

它不会显示历史记录{有效,等待签名,已颁布或已审核}。我尝试过$value['history']['active'],并创建一个变量来捕获信息然后使用$catch['active'],但仍然无法获得结果。

这已经让我烦恼了一个多星期了,而且我已经看了足够长的时间来决定我需要寻求帮助。任何人都可以帮助我吗?

P.S。我还有print_r($ history),然后去告诉我:

  

数组([有效] =&gt; [awaiting_signature] =&gt; [已制定] =&gt; [否决] =&gt;)

2 个答案:

答案 0 :(得分:1)

当您读入值时,false被视为布尔值,而不是字符串。当您尝试回显布尔值false时,PHP不显示任何内容(例如,尝试print false;)。您还可以通过将print_r输出与var_dump输出进行比较来进一步验证,例如:

Interactive shell

php > var_dump(false);
bool(false)
php > print_r(false);
php >

请参阅此问题以获得可能的解决方案: How to Convert Boolean to String

基本概述是你需要测试值,然后输出一个字符串。

答案 1 :(得分:0)

FALSE没有字符串值,这意味着它不会在PHP中打印。您无法通过echoprint甚至fwrite(STDOUT...看到它。

但是,您将使用var_dump查看所有内容。

var_dump($key['results']);

// outputs:
  array(1) {
    [0]=>
    array(8) {
      ["bill_id"]=>
      string(11) "hres311-113"
      ["bill_type"]=>
      string(4) "hres"
      ["chamber"]=>
      string(5) "house"
      ["committee_ids"]=>
      array(1) {
        [0]=>
        string(4) "HSHA"
      }
      ["congress"]=>
      int(113)
      ["cosponsors_count"]=>
      int(9)
      ["enacted_as"]=>
      NULL
      ["history"]=>
      array(4) {
        ["active"]=>
        bool(false)
        ["awaiting_signature"]=>
        bool(false)
        ["enacted"]=>
        bool(false)
        ["vetoed"]=>
        bool(false)
      }
    }
  }