如何通过php中的索引访问json数据?

时间:2017-10-17 07:33:08

标签: php arrays json

在下面的JSON retured数组中,我想访问最近两个日期的收盘价($ json ['时间序列(每日)'] [某个日期] ['4。关闭'])。由于数据是股票价格,每天的日期不断变化。周末和公众假期也没有数据。 我能够访问当天的数据,但如何访问前一天的数据? 我认为通过索引访问元素将起作用,但我无法弄清楚如何通过php中的索引访问json元素。 有没有其他方法可以做我想做的事情? 我的json返回数组如下所示: $ JSON = 排列 (     [Meta Data] =>排列         (             [1。信息] =>每日价格(开盘价,最高价,最低价,收盘价)和成交量             [2。符号] => AAPL             [3。 Last Refreshed] => 2017年10月16日             [4。输出尺寸] =>紧凑             [5。时区] =>美国/东部         )

[Time Series (Daily)] => Array
    (
        [2017-10-16] => Array
            (
                [1. open] => 157.9000
                [2. high] => 160.0000
                [3. low] => 157.6500
                [4. close] => 159.8800
                [5. volume] => 23894630
            )

        [2017-10-13] => Array
            (
                [1. open] => 156.7300
                [2. high] => 157.2800
                [3. low] => 156.4100
                [4. close] => 156.9900
                [5. volume] => 16287608
            )

        [2017-10-12] => Array
            (
                [1. open] => 156.3500
                [2. high] => 157.3700
                [3. low] => 155.7300
                [4. close] => 156.0000
                [5. volume] => 16045720
            )

        [2017-10-11] => Array
            (
                [1. open] => 155.9700
                [2. high] => 156.9800
                [3. low] => 155.7500
                [4. close] => 156.5500
                [5. volume] => 16607693
            )

        [2017-10-10] => Array
            (
                [1. open] => 156.0600
                [2. high] => 158.0000
                [3. low] => 155.1000
                [4. close] => 155.9000
                [5. volume] => 15456331
            )

............等等

3 个答案:

答案 0 :(得分:0)

您可以按日期键对数组进行排序,请参阅(http://php.net/manual/en/function.uksort.php

然后检索数组的最后一个元素

示例:(我没有测试过这个)

<?php
function cmp($a, $b)
{
    if ($a[1] == $b[1]) return 0;
    return (strtotime($a[1]) < strtotime($b[1])) ? 1 : -1;
}

// order the array by date 
uksort($json, "cmp");

end($array);         // move the internal pointer to the end of the array
$date = key($array);  // fetches the key of the element pointed to by the internal pointer
$values = array_pop($array); // retrieve the last element of the array

//do it agian for the day before
end($array);         // move the internal pointer to the end of the array
$prevDate = key($array);  // fetches the key of the element pointed to by the internal pointer
$prevValues = array_pop($array); // retrieve the last element of the array

var_dump($date,$prevDate);
?>

答案 1 :(得分:0)

假设$json数组已订购日期,

有几种方法可以访问以$json为键的date数组。

strftimestrptime会对您有很大帮助。

我建议创建一个接受date (string)的日期转换器功能,并根据您想要的移动返回修改后的date (string)

例如:

function adjustDate($date, $move) {
  $dateObject = // uses strptime to create date object from the $date
  $dateObject += $move; // $move is an integer - to revert back, + to move forward
  return //strftime -> this should format the date object to the string
}

现在访问$json数组应该是一个简单的问题。

答案 2 :(得分:-1)

首先你可以在php中解码json,

$array = json_decode($json_array,true);

然后你可以通过密钥访问它,使用每个或直接使用的值,如

$array->2017-10-16->1. open