我无法处理Companies House API的回复。我正在从php页面发出以下curl请求:
$request_url_1 ='https://api.companieshouse.gov.uk/company/' ;
$company_number = 11495745;
$request_url_2 = '/officers';
$request_url = $request_url_1 . $company_number . $request_url_2;
$ch = curl_init($request_url);
$headers = array(
'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$chkey:")
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$content = curl_exec($ch);
curl_close( $ch );
$contents = json_decode($content,true);
以下是发送curl请求后在php页面上“粘贴”的响应,我似乎无法获得应包含curl响应的$ contents变量的内容/值。
{
"active_count":1,
"items_per_page":35,
"kind":"officer-list",
"etag":"6cc48213158205c9fa85492a4c2ef0a98b56b2f1",
"resigned_count":2,
"items":[
{
"date_of_birth":{
"year":1963,
"month":2
},
"appointed_on":"2019-08-01",
"nationality":"British",
"address":{
"address_line_1":"Moorside Crescent",
"country":"United Kingdom",
"address_line_2":"Sinfin",
"postal_code":"DE24 9PH",
"locality":"Derby",
"premises":"75"
},
"occupation":"Company Director",
"links":{
"officer":{
"appointments":"/officers/IryiaaBZodlGNaOP0Rf3Pb2GnO8/appointments"
}
},
"name":"MILLER, Eira",
"country_of_residence":"England",
"officer_role":"director"
},
{
"date_of_birth":{
"month":3,
"year":1987
},
"nationality":"English",
"occupation":"Company Director",
"address":{
"locality":"Derby",
"address_line_1":"Moorside Crescent",
"premises":"75",
"country":"United Kingdom",
"postal_code":"DE24 9PH",
"address_line_2":"Sinfin"
},
"appointed_on":"2018-12-10",
"resigned_on":"2019-07-31",
"name":"KING, Kimberley Rachel",
"links":{
"officer":{
"appointments":"/officers/av7G3-iF_9-FXhRH2xm-IxejeGQ/appointments"
}
},
"country_of_residence":"United Kingdom",
"officer_role":"director"
},
{
"address":{
"postal_code":"DE24 9PH",
"locality":"Derby",
"country":"United Kingdom",
"premises":"75",
"address_line_2":"Sinfin",
"address_line_1":"Moorside Crescent"
},
"occupation":"Managing Director",
"nationality":"British",
"appointed_on":"2018-08-01",
"resigned_on":"2018-12-10",
"officer_role":"director",
"country_of_residence":"United Kingdom",
"links":{
"officer":{
"appointments":"/officers/X9nlVD6qIIENMjaH946__4CB3QE/appointments"
}
},
"name":"MARTIN, Katey",
"date_of_birth":{
"month":6,
"year":1968
}
}
],
"links":{
"self":"/company/11495745/officers"
},
"inactive_count":0,
"start_index":0,
"total_results":3
}
我尝试将结果作为非关联数组返回并通过普通数组访问它,但那里也没有乐趣。
FluffyKitten提供了以下代码来执行名称字段的提取:
$item = $contents["items"];
foreach($item as $items){
echo $items["name"];
}
但是,这无法访问所需的数据。 $ contents的print_r结果为'1',并且var_dump(1)
答案 0 :(得分:1)
您的代码有几个问题:
您正在使用json_decode($content,true)
,并通过传递该true
参数将结果转换为关联数组,但随后尝试将items
作为对象的属性进行访问
由于已将内容转换为关联数组,因此可以使用正确的键轻松访问所需的信息,例如:
$item = $contents["items"];
foreach($item as $items){
echo "<p>".$items["name"];
}
参考 PHP json_decode
Documentation
更新:
您的问题已经完全改变-它是关于如何遍历变量与结果的关系,但是现在看来,问题首先是将结果另存为变量。
您需要将CURLOPT_RETURNTRANSFER
option设置为true
,以免直接输出结果(我想这就是您将结果“粘贴”到PHP页面中的意思)。
将此代码添加到您的CURL代码中,然后如果其余代码正确无误,则应将结果保存在$content
变量中,以便您可以使用它循环遍历上面的代码:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);