php - 使用 CURL 获取 JSON 数据

标签 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);

但是当我试图显示计划的 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/

相关文章:

扩展类中的PHP依赖注入(inject)

javascript - lodash 中不区分大小写的 group By

ruby-on-rails - gem install json 失败,重新定义了 struct timezone/timespec

php - PHP强制关闭(杀死)连接

PHP cURL https 不适用于新的 VPS

PHP、MySQL 登录跳过应执行的代码部分

php - Laravel 请求文件更改

php - MySQL函数: in clause HAVING query runs twice

javascript - 如何将 php 变量添加到 javascript 中?

Python AUTH0 发布请求 : Invalid request payload JSON format