PHP/JSON跳过信息?提供了多个测试用例
我还有一个JSON/PHP问题。首先,我将发布一段简短的JSON,至少足以表达我的观点:PHP/JSON跳过信息?提供了多个测试用例,php,json,parsing,Php,Json,Parsing,我还有一个JSON/PHP问题。首先,我将发布一段简短的JSON,至少足以表达我的观点: "results": [ { "members": [ { "side": "majority", "rank": 1, "title": "Chairman", "legislator": {
"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
乍一看,我觉得事情看起来有点可疑,因为主席头衔的数量在浮动(主席之间应该有几个空),而第二个bioguide_id不是第二个职位的正确bioguide_id(主席&T000464看起来是正确的,但下一个不应该是主席M001170,而应该是NULL P000590)。我已将$value['members'][0]…切换为$value['members'][1],并能够获得第二个地址,但结果不正确。是否有任何人可以看到任何东西,使我能够获取正确的信息?从我处理其他JSON文件的方式来看,我似乎没有做得明显错误。提前感谢(我知道这很长).您的
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/>';
}
foreach($key1['results'][0]['members']作为$value){
$title_1=$value['title'];
如果($title_1==NULL){
$title_1=“空”;
}
echo$title_1.“
”。$value['legiator']['bioguide_id'].
”;
}
这就是创建JSON的真正目的…您是否通过验证器运行JSON数据?例如,从查看代码来看,您似乎需要迭代成员。您是否可以使用数组而不是部分JSON更新您的帖子?您总是使用索引处的成员0
这是有意的吗?您就是Ryan!谢谢哦,太多了——正是这样简单的疏忽阻碍了我多年的编码。再次感谢