我有一个通过 API 填充数据的网站。我阅读了它的文档以获取其数据,它建议使用 curl。我对curl不熟悉,于是自己去学习,得到了如下代码:
$url = 'https://api.flightplandatabase.com/search/plans?fromICAO=EHAM&toName=Kennedy&limit=1';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
$datasearch = json_decode($data);
echo $datasearch['id'];
curl_close($curl);
但是当我试图显示计划的 ID 时,我得到了一个空白页面。如果我删除 curl_setopt 然后它给我整个 JSON 数据。请告诉我我做错了什么。谢谢
最佳答案
我添加了 curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json'));
行以确保我们接受 JSON 格式的数据。
$datasearch
是一个包含一个元素的数组。该元素是您想要的所有属性的数组。因此,要访问这些属性,我们需要先访问元素,然后再访问属性。您可以通过 $datasearch[0]["id"];
执行此操作。为避免不断键入 $datasearch[0]
,您只需将 $datasearch
值重置为其第一个元素 ($datasearch = $datasearch[0];
)。之后,您可以像 $datasearch["id"]
一样使用它。
<?php
$url = 'https://api.flightplandatabase.com/search/plans?fromICAO=EHAM&toName=Kennedy&limit=1';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
$datasearch = json_decode($data, true);
if(!empty($datasearch)) {
$datasearch = $datasearch[0];
echo $datasearch["id"];
} else {
echo "Data not fetched.";
}
curl_close($curl);
?>
关于php - 使用 CURL 获取 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46016227/