php - 为什么我不能将此 json 访问到 php 数组?
问题描述
我正在尝试使用 curl 从这个 api 获取股票价格
//Initialize cURL.
$ch = curl_init();
//Set the URL that you want to GET by using the CURLOPT_URL option.
curl_setopt($ch, CURLOPT_URL, 'https://cloud.iexapis.com/stable/stock/market/batch?symbols=aapl,msft&types=quote&filter=latestPrice&token=(redacted)');
//Set CURLOPT_RETURNTRANSFER so that the content is returned as a variable.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Set CURLOPT_FOLLOWLOCATION to true to follow redirects.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//Execute the request.
$data = curl_exec($ch);
//Close the cURL handle.
curl_close($ch);
$stockdata = json_decode($data, true);
现在我收到此错误:注意:未定义的偏移量:0
这是我转换成数组的json:
{"AAPL":{"quote":{"latestPrice":425.04}},"MSFT":{"quote":{"latestPrice":205.01}}}
这是我用来尝试访问数组的代码,稍后我想遍历所有价格。
echo $stockdata[0]['quote']['latestPrice'];
解决方案
当您使用关联数组时,它不再是数字索引,您需要按名称访问它的键,即“AAPL”。
echo $stockdata['AAPL']['quote']['latestPrice'];
打印出来
425.04
更新 1
当你不知道第一个密钥时,就这样获取
echo $stockdata[array_keys($stockdata)[0]]['quote']['latestPrice'];
解释
array_keys($stockdata)
将为您提供另一个数组,其中所有键名作为基于数字索引的数组。在[0]
此示例中,您可以访问第一个元素(第 0 个元素),即“AAPL”。
更新 2
根据循环通过的评论,你可以这样做
foreach($stockdata as $stock => $data) {
echo "{$stock} => {$data['quote']['latestPrice']}\n";
}
苹果 => 425.04
微软 => 205.01
推荐阅读
- css - 手动切换暗模式 - SASS - SCSS
- typescript - 具有通用交叉点类型的奇怪行为
- authentication - 有什么方法可以将放大与 nuxtjs/Vue 一起使用?
- next.js - 如何禁用 Netlify 错误页面并使用自定义错误页面而不是 NextJS?
- python - 如何将图像数据集转换为 pkl 文件
- c# - 将会话中的对象清空会立即将其销毁
- javascript - 使用 Nuxt 2 组合 API 来获取模板 refs 数组
- python - 使用 win32com 实例化并使用用户定义的 vba 对象
- javascript - 如何将用户收到的多个值保存在 localStorage 中?
- firebase - Firebase 从哪个步骤开始按 AB-test 中的变体拆分流量