2

JSON / PHP に関する別の質問があります。少なくとも私の主張を伝えるのに十分な、JSON の短いセグメントを投稿することから始めます。

 "results": [
    {
        "members": [
            {
                "side": "majority",
                "rank": 1,
                "title": "Chairman",
                "legislator": {
                    "bioguide_id": "T000464",
                    "birthday": "1956-08-21",
                    "chamber": "senate",
                    "contact_form": "http://www.tester.senate.gov/Contact/index.cfm",
                    "crp_id": "N00027605",
                    "district": null,
                    "facebook_id": "210573031664",
                    "fax": "202-224-8594",
                    "fec_ids": [
                        "S6MT00162"
                    ],
                    "first_name": "Jon",
                    "gender": "M",
                    "govtrack_id": "412244",
                    "icpsr_id": 40702,
                    "in_office": true,
                    "last_name": "Tester",
                    "lis_id": "S314",
                    "middle_name": null,
                    "name_suffix": null,
                    "nickname": null,
                    "office": "706 Hart Senate Office Building",
                    "party": "D",
                    "phone": "202-224-2644",
                    "senate_class": 1,
                    "state": "MT",
                    "state_name": "Montana",
                    "state_rank": "junior",
                    "term_end": "2019-01-03",
                    "term_start": "2013-01-03",
                    "thomas_id": "01829",
                    "title": "Sen",
                    "twitter_id": "testerpress",
                    "votesmart_id": 20928,
                    "website": "http://www.tester.senate.gov",
                    "youtube_id": "senatorjontester"
                }
            },
            {
                "side": "majority",
                "rank": 2,
                "title": null,
                "legislator": {
                    "bioguide_id": "P000590",
                    "birthday": "1963-01-10",
                    "chamber": "senate",
                    "contact_form": "http://www.pryor.senate.gov/public/index.cfm?p=ContactMe",
                    "crp_id": "N00013823",
                    "district": null,
                    "facebook_id": "9248638978",
                    "fax": "202-228-0908",
                    "fec_ids": [
                        "S0AR00028"
                    ],
                    "first_name": "Mark",
                    "gender": "M",
                    "govtrack_id": "300080",
                    "icpsr_id": 40301,
                    "in_office": true,
                    "last_name": "Pryor",
                    "lis_id": "S295",
                    "middle_name": null,
                    "name_suffix": null,
                    "nickname": null,
                    "office": "255 Dirksen Senate Office Building",
                    "party": "D",
                    "phone": "202-224-2353",
                    "senate_class": 2,
                    "state": "AR",
                    "state_name": "Arkansas",
                    "state_rank": "senior",
                    "term_end": "2015-01-03",
                    "term_start": "2009-01-06",
                    "thomas_id": "01701",
                    "title": "Sen",
                    "twitter_id": "senmarkpryor",
                    "votesmart_id": 35,
                    "website": "http://www.pryor.senate.gov",
                    "youtube_id": "senatorpryor"
                }
            },

わかりました - 私が取得しようとしている情報は、各議員の役職と bioguide_id です。情報を解析するために使用しているコードは次のとおりです。

 $url1 = 'http://congress.api.sunlightfoundation.com/committees?fields=members&apikey=XXXXXXXXXXX&per_page=20&page=1';
 $response1 = file_get_contents($url1);
 $key1 = json_decode($response1, true);


 foreach ($key1['results'] as $value){

$title_1 = $value['members'][0]['title'];

if($title_1 == NULL){
    $title_1 = "NULL";
}
echo $title_1 . '<br/>' . $value['members'][0]['legislator']['bioguide_id'] . '<br/>';

 }

ただし、スクリプトを実行した結果は次のようになります。

 Chairman
 T000464
 Chairman
 M001170
 Chairman
 B001265
 Chairman
 L000261
 Chairman
 B000711
 Chairman
 K000384
 Chairman
 B001267
 Chairman
 C001070
 Chairman
 W000802
 Chairman
 M001176
 Chairman
 N000032
 Chairman
 K000367
 Chairman
 G000555
 NULL
 L000174
 Chairman
 H001069
 Chairman
 B001267
 Chairman
 D000607
 Vice Chairman
 B000243
 Chairman
 S000148
 Vice Chairman
 S000148

一見すると、委員長の称号が大量に出回っているため (委員長の間にいくつかの NULL があるはずです)、2 番目の bioguide_id が 2 番目の位置の正しい bioguide_id ではないため、物事が怪しく見えると思いました (委員長 & T000464 のように見えます)。正解ですが、次は議長 M001170 ではなく、NULL P000590 であるべきです)。$value['members'][0]... を $value['members'][1] に変更し、2 番目のアドレスを取得できましたが、結果は正しくありませんでした。正しい情報を取得できるように、誰でも見ることができるものはありますか? 私が他の JSON ファイルをどのように扱ったかを見ると、これは劇的に間違っているわけではないように思えます。よろしくお願いします(長かったことは承知しています)。

4

1 に答える 1

2

メンバーforeachのセットではなく、結果のセットをループしています。

これは私が動作foreachを確認した動作です:

foreach ($key1['results'][0]['members'] as $value) {
  $title_1 = $value['title'];
  if ($title_1 == NULL) {
    $title_1 = "NULL";
  }

  echo $title_1 . '<br/>' . $value['legislator']['bioguide_id'] . '<br/>';
}
于 2013-08-15T16:12:19.937 に答える