我正在努力寻找PHP / JSON问题的解决方案。我编写了一个脚本,使用一个下拉JSON文件的URL来显示股票市场定价。我是PHP的新手,我似乎无法访问JSON文件中的各个元素。
这是我的剧本:
http://data.asx.com.au/data/1/share/TLS/prices?interval=daily&count=1
$price = file_get_contents('http://data.asx.com.au/data/1/share/TLS/prices?interval=daily&count=1');
$fileprices = json_decode($price, true);
print_r ($fileprices);
返回:
[data] => Array (
[0] => Array (
[code] => FET
[close_date] => 2017-11-06T00:00:00+1100
[close_price] => 2.81
[change_price] => 0.01
[volume] => 85278
[day_high_price] => 2.83
[day_low_price] => 2.78
[change_in_percent] => 0.357%
)
)
如何访问元素[code]并返回数据FET或任何其他元素?
我尝试了很多方法而没有成功。任何帮助将不胜感激。
答案 0 :(得分:1)
试试这个
$price = file_get_contents('http://data.asx.com.au/data/1/share/TLS/prices?interval=daily&count=1');
$fileprices = json_decode($price, true);
$data = $fileprices['data'][0];
然后你可以尝试回显$ data ['code'];或echo $ data ['close_price'];或者
答案 1 :(得分:1)
如果您通过api调用返回了多个元素,则可以使用$fileprices['data']
遍历forEach()
并获取所需元素。
forEach($fileprices['data'] as $key=>$value) {
print_r($filePrices['data'][$key]['code']);
}
答案 2 :(得分:0)
我建议不要将, true
标志传递给json_decode()
,它会将整个响应转换为关联数组,因为看似没有理由。默认情况下,JSON对象是一个对象,在这种情况下无需转换为数组。它没有错,但也没有理由。
话虽如此,这是一个示例,展示了如何使用json_decode()
的默认行为来获取您正在寻找的属性。
<?php
$response = file_get_contents('http://data.asx.com.au/data/1/share/TLS/prices?interval=daily&count=1');
$response = $response ? json_decode($response) : null;
if ( $response instanceof StdClass ) {
echo $response->data[0]->code."\n";
echo $response->data[0]->close_price."\n";
echo $response->data[0]->change_price."\n";
// etc...
}