php - 如何通过定义特定键来访问 php 中嵌套数组中的所有值?
问题描述
我正在创建一个路由应用程序并将结果作为 json 数组获取。将其转换为 php 数组后,我正确地获得了整个距离和整个持续时间。现在我也需要关键“腿”中的每个值的距离和持续时间,但我所做的一切都是为了获取数据不起作用。
数组的 json 输出如下所示:
array (
'routes' =>
array (
0 =>
array (
'legs' =>
array (
0 =>
array (
'summary' => '',
'weight' => 3741.9,
'duration' => 2912.3, // This value is what i want access
'steps' =>
array (
),
'distance' => 21603.1, // This value is what i want access
),
1 =>
array (
'summary' => '',
'weight' => 3642.1,
'duration' => 2777.4, // This value is what i want access
'steps' =>
array (
),
'distance' => 21611.8, // This value is what i want access
),
),
'weight_name' => 'routability',
'weight' => 7384,
'duration' => 5689.700000000001, // This value i can acesss
'distance' => 43214.899999999994, // This value i can acesss too
),
),
'waypoints' =>
array (
0 =>
array (
'hint' => '',
'distance' => 16.78277948979663, // This value is what i want access
'name' => 'Weg',
'location' =>
array (
0 => 11.4623,
1 => 50.7126,
),
),
1 =>
array (
'hint' => '',
'distance' => 16.62835508134535,
'name' => 'Weg',
'location' =>
array (
0 => 12.6069,
1 => 51.5398,
),
),
2 =>
array (
'hint' => '',
'distance' => 16.78277948979663,
'name' => 'Weg',
'location' =>
array (
0 => 12.343,
1 => 51.576,
),
),
),
'code' => 'Ok',
)
我通过以下代码得到整个距离(43214.8)和整个持续时间(5689.7):
foreach($res2['routes'] as $item)
{
$distances = array_push_assoc($distances, $item['distance'], $item['duration']);
}
为了获得距离和持续时间,我做了以下事情:
foreach($res2['routes']['legs'] as $item)
{
$durations = array_push_assoc($durations , "DUR", $item['duration']);
}
如何从“腿”中获取距离和持续时间?为什么不工作 $res2['routes']['legs']?
谢谢!
解决方案
请注意“legs”数组存在于“routes”数组的索引 0 中,因此在其上循环需要使用$res2['routes'][0]['legs']
.
此外,请注意,array_push_assoc
在循环中使用相同的硬编码密钥(如您的示例中的“DUR”)每次都会覆盖该密钥,因此您的数据会丢失 - 您最好将其更改为:
foreach($res2['routes'][0]['legs'] as $item) {
$durations[] = $item['duration'];
}
推荐阅读
- mysql - 如何知道 AWS EC2 中连接 mysql 的主机地址?
- mysql - mysql查询同时计算卖家和物品?
- java - java中嵌套的f语句没有返回正确的迭代值?
- c# - net5.0 中的信号量是否支持全局信号量,安全性如何工作?
- python - 该函数被调用两次,并且文本在电报机器人中显示不正确
- node.js - AWS Lambda 二进制响应无法正常工作
- arrays - 试图向后打印一个单词,但我不断收到 [segmentation fault [core dumped]] 等等
- django - 在 Django 中使用 Scrapy 选择 HTML 中的所有脚本标签
- python - 运行一个在 jupyter 单元格中接受参数的 python 脚本
- python - 将文件从服务器复制到同一本地网络中的客户端