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 ファイルをどのように扱ったかを見ると、これは劇的に間違っているわけではないように思えます。よろしくお願いします(長かったことは承知しています)。