为什么可以';我不能访问这个json到php数组吗?

为什么可以';我不能访问这个json到php数组吗?,php,curl,Php,Curl,我正在尝试使用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&a

我正在尝试使用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'];
foreach($stockdata as $stock => $data) {
    echo "{$stock} => {$data['quote']['latestPrice']}\n";
}
解释
array\u keys($stockdata)
将为您提供另一个包含所有键名的数组,作为基于数字索引的数组。使用
[0]
可以访问第一个元素(第0个元素),在本例中为“AAPL”


更新2 基于循环的评论,你可以这样做

echo $stockdata[array_keys($stockdata)[0]]['quote']['latestPrice'];
foreach($stockdata as $stock => $data) {
    echo "{$stock} => {$data['quote']['latestPrice']}\n";
}
AAPL=>425.04
MSFT=>205.01


echo$stockdata['AAPL']['quote']['latestPrice']
给出了
425.04
。我想尝试使用循环循环遍历我得到的所有引用。这是否回答了您的问题?更新的答案,当第一个关键字名称未知时。更新的答案,删除股票。@难以置信,在撰写答案时,他没有看到那个评论。谢谢你的提示。我更新了答案。实际上,我的意思是
foreach($stockdata as$stock=>$info){..}
这样他们就可以用
$stock
列出所有的股票名称,然后像
$info['quote']['latestPrice']
那样访问它的信息。无论哪种方式,从多个角度获取所有数据都非常容易,因此有多个这样的例子是很好的。@难以置信啊,我明白了。再次更新。