API 卷曲响应出现问题 (php)

Trouble With API Curl Response(php)

我对 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 页面上 'pasted' 的响应,我似乎无法获取 $contents 变量的 contents/value应包含卷曲响应。

 {
   "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)

您的代码有几个问题:

  1. 您混淆了访问数组和对象的代码
  2. 不需要循环的时候你在循环

您正在使用 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 以便不直接输出结果(我假设这就是您将结果“粘贴”到 [=49= 中的意思] 页)。

将此添加到您的 CURL 代码中,并且 如果您的其余代码正确,结果应保存在 $content 变量中以便您可以使用它使用上面的代码循环:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);