JSON和PHP - 从证券交易所提取数据

时间:2017-11-07 05:20:59

标签: php arrays json

我正在努力寻找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或任何其他元素?

我尝试了很多方法而没有成功。任何帮助将不胜感激。

3 个答案:

答案 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...
}