在下面的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
)
............等等
答案 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
数组。
我建议创建一个接受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