php - 如何使用 PHP 从多维数组中提取值
问题描述
我正在使用 Alpha Vantage API 获取股票价格,并且我能够很容易地获得最新价格。但我想从五个条目中取回价格。
这是我正在使用的数组的开始
{
"Meta Data": {
"1. Information": "Daily Prices (open, high, low, close) and Volumes",
"2. Symbol": "IBM",
"3. Last Refreshed": "2021-02-22",
"4. Output Size": "Compact",
"5. Time Zone": "US/Eastern"
},
"Time Series (Daily)": {
"2021-02-22": {
"1. open": "118.5000",
"2. high": "121.1250",
"3. low": "118.4400",
"4. close": "120.8600",
"5. volume": "5838841"
},
"2021-02-19": {
"1. open": "120.7500",
"2. high": "120.7600",
"3. low": "118.3800",
"4. close": "118.9900",
"5. volume": "6578741"
},
这是我一直在使用的笨重代码,
第一天,
把它变成时间,
休息 7 天(因为他们的交易所在周末关闭)并使用修改后的日期。
$getstocksapi = "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=".$stock[$x]."&outputsize=compact&apikey=mycode;
$currentprices = file_get_contents($getstocksapi);
$currentprices = json_decode($currentprices,true);
$dateToCheck =($currentprices['Meta Data']['3. Last Refreshed']);
$oldDateToCheck = strtotime($dateToCheck);
$oldDateToCheck = ($oldDateToCheck - 60 * 60 * 24 * 7);
$oldDateToCheck = date("Y-m-d", $oldDateToCheck);
$dayEnd[$x] = ($currentprices['Time Series (Daily)'][$dateToCheck]['4. close']);
$thenDayEnd[$x] = ($currentprices['Time Series (Daily)'][$oldDateToCheck]['4. close']);
有没有更优雅的方法,也许使用 array_slice 我可以获得最近的收盘价,然后是五个条目中的一个?
解决方案
从评论中,数字索引不起作用,因为它仍然没有数字索引。要重新索引,您可以使用 function array_values()
。
$currentprices = json_decode($data, true);
$timeSeriesDaily = array_values($currentprices['Time Series (Daily)']);
然后$timeSeriesDaily
将是相同的数组,但使用数字索引,您可以使用以下内容访问第 5 个索引。
echo $timeSeriesDaily[4]['4. close'];
推荐阅读
- javascript - Firestore 实时删除或修改
- xamarin - 在共享代码项目和跨平台应用程序之间导航
- java - 铸造泛型类
- c# - 如何从谷歌驱动器中的文件列表生成哈希值
- javascript - 如何从javascript中的对象对象中删除对象
- macos - 通过 SSH 连接到 Google Cloud (GCP) 和 Google Compute Enginge (GCE) 时,命令键 (⌘) 不再起作用
- android - 通过 SSH 和 VNC 通过代理服务器连接 Android 设备
- vue.js - 在 Gridsome/Vue.js 中将变量传递给 GraphQL 查询
- c# - 如何按单元格颜色对 datagridview 进行排序?
- roku - 在视频流期间,我如何获得块?