【问题标题】:How to put an API Return into different variables如何将 API Return 放入不同的变量中
【发布时间】:2017-03-10 17:23:20
【问题描述】:

我正在使用 API 来显示来自我的访问者的信息,并将从注册到网站时的一些详细信息存储在数据库中。我从 API 得到的响应是这样的:

{"data":{"ua_type":"Desktop","os_name":"Windows","os_version":"10","browser_name":"Firefox","browser_version":"52.0","engine_name":"Gecko","engine_version":"20100101"}} 

我该如何去做,以便我可以将一些值放入变量中,例如

$device = ua_type;

$os = os_name;

等等……

请提供任何帮助。

更新

我看过 json_decode 就像你们中的一些人提到的,下面是我的一些代码,由于某种原因它不会显示任何值,我下面的代码有什么问题? print_r($result);工作正常,但将结果放在变量中似乎没有输出任何东西。提前感谢您的帮助!

$result = curl_exec($ch);
    $http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    print_r($result);
    $apiresult = json_decode($result);

$ua_type=$apiresult->{'ua_type'};
$os_name=$apiresult->{'os_name'};
$os_version=$apiresult->{'os_version'};
$browser_name=$apiresult->{'browser_name'};
$browser_version=$apiresult->{'browser_version'};
$ua_brand=$apiresult->{'ua_brand'};
$ua_name=$apiresult->{'ua_name'};

echo "<br>";
echo "Device" . $ua_type;
echo "<br>";
echo "OS" . $os_name;
echo "<br>";
echo "OS Version" . $os_version;
echo "<br>";
echo "Browser" . $browser_name;
echo "<br>";
echo "Browser Version" . $browser_version;
echo "<br>";
echo "Mobile Make" . $ua_brand;
echo "<br>";
echo "Mobile Model" . $ua_name;

【问题讨论】:

标签: php arrays api variables curl


【解决方案1】:

正如您帖子中的一些 cmets 所建议的那样,您应该阅读json_decode,因为它会完全满足您的需求:)

$data = json_decode('{"data":{"ua_type":"Desktop","os_name":"Windows","os_version":"10","browser_name":"Firefox","browser_version":"52.0","engine_name":"Gecko","engine_version":"20100101"}}', true);

将产生以下数据结构:

[
     "data" => [
       "ua_type" => "Desktop",
       "os_name" => "Windows",
       "os_version" => "10",
       "browser_name" => "Firefox",
       "browser_version" => "52.0",
       "engine_name" => "Gecko",
       "engine_version" => "20100101",
     ],
   ]

然后,您可以简单地将变量分配给您需要的任何位,如下所示:

$ua_type = $data['data']['ua_type']

【讨论】:

  • 你应该使用extract函数,而不是一一分配变量。
  • @CasimiretHippolyte 应该在这里是主观的。虽然您当然可以提取,但为了代码的可读性,我可能不会。使用来自 API 的数据,如果变量被显式调用,则在六个月后查看代码时,会更容易查看返回的所有内容。不过,这是一个偏好问题。
  • 您好,我已经发布了有关该主题的更新,由于某种原因我无法让我的代码工作,请我让您帮我看一下。谢谢你们到目前为止的帮助!
猜你喜欢
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 2013-01-07
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2021-04-28
相关资源
最近更新 更多