php - 在 PHP 中解析“嵌套”数组
问题描述
我正在像这样返回 JSON 数据:
{
"destination_addresses": [
"67-89 Pacific St, Brooklyn, NY 11201, USA"
],
"origin_addresses": [
"566 Vermont St, Brooklyn, NY 11207, USA"
],
"rows": [
{
"elements": [
{
"distance": {
"text": "6.5 mi",
"value": 10423
},
"duration": {
"text": "35 mins",
"value": 2076
},
"status": "OK"
}
]
}
],
"status": "OK"
}
我需要将距离值和持续时间值作为变量。
所以,我知道我需要解码这个 JSON:
$distance_data = json_decode($output);
而且我尝试了很多变化,例如:
$duration_value = $distance_data['rows']['elements']['duration']['value']);
但我知道这是不对的。有人可以指出我正确的方向吗?
解决方案
你得到了对象和数组的混合。这是您的示例的完整示例。
// Your JSON response.
$json = '{
"destination_addresses": [
"67-89 Pacific St, Brooklyn, NY 11201, USA"
],
"origin_addresses": [
"566 Vermont St, Brooklyn, NY 11207, USA"
],
"rows": [
{
"elements": [
{
"distance": {
"text": "6.5 mi",
"value": 10423
},
"duration": {
"text": "35 mins",
"value": 2076
},
"status": "OK"
}
]
}
],
"status": "OK"
}';
// Get JSON Object
$obj = json_decode($json);
// Let's see what's in the object.
print_r($obj);
/*
stdClass Object
(
[destination_addresses] => Array
(
[0] => 67-89 Pacific St, Brooklyn, NY 11201, USA
)
[origin_addresses] => Array
(
[0] => 566 Vermont St, Brooklyn, NY 11207, USA
)
[rows] => Array
(
[0] => stdClass Object
(
[elements] => Array
(
[0] => stdClass Object
(
[distance] => stdClass Object
(
[text] => 6.5 mi
[value] => 10423
)
[duration] => stdClass Object
(
[text] => 35 mins
[value] => 2076
)
[status] => OK
)
)
)
)
[status] => OK
)
*/
// Let's pull the value we want using the information above.
// Notice we start with an object, then rows is an array of objects, as is elements.
echo $obj -> rows[0] -> elements[0] -> duration -> value;
推荐阅读
- java - 为什么java对吉他和弦给出不同的结果
- http-live-streaming - 如何为多个用户流式传输实时视频?
- c# - 反序列化泛型类型无法设置类型 T 的属性
- bash - 如何迭代文件中的行并将字段读入变量
- javascript - 我的数据表中有大量记录,有 37 列,打印页面出现数据崩溃
- callback - Dataflow管道完成后如何执行一组操作?
- kentico - Kentico IEnumerable
在我的控制器中为空 - flutter - Flutter:如何使用 for 循环更改警报框中的 ProgressBar 值
- arduino-c++ - 使用指针 Arduino 调用函数时出现问题
- java - 导出 Eclipse-RCP 应用程序时出错:无法解析导入的 org.osgi.service.component