1

我正在尝试分析一些政府数据。这是 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/>';
}

它不会显示 History{Active, Awaiting Signature, Enacted, or Vetoed}。我试过做$value['history']['active'],以及创建一个变量来捕获信息,然后使用它$catch['active']但仍然无法得到结果。

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

PS我也 print_r($history) 去给我看:

数组([活动] => [awaiting_signature] => [制定] => [否决] =>)

4

2 回答 2

1

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

Interactive shell

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

请参阅此问题以获取可能的解决方案: 如何将布尔值转换为字符串

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

于 2013-07-22T20:50:49.330 回答
1

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)
      }
    }
  }
于 2013-07-22T20:54:26.970 回答