使用 CURL 获取 JSON 数据

Par*_*jad 2 php json curl

我有一个通过 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);
Run Code Online (Sandbox Code Playgroud)

但当我尝试显示计划的 ID 时,我得到了一个空白页。如果我删除curl_setopt,那么它会给我整个JSON数据。请告诉我我做错了什么。谢谢

Spe*_*ion 5

我添加了该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);
?>
Run Code Online (Sandbox Code Playgroud)