Php 将数字数组转换为关联数组
以下JSON结构:Php 将数字数组转换为关联数组,php,json,Php,Json,以下JSON结构: { "details": [ {"specific_exercise.distance" : "14",}, {"specific_exercise.avg_pace" : "7.5"} ] } 使用json_解码时转换为: stdClass Object ( [details] => Array ( [0] => stdClass Object
{
"details":
[
{"specific_exercise.distance" : "14",},
{"specific_exercise.avg_pace" : "7.5"}
]
}
使用json_解码时转换为:
stdClass Object
(
[details] => Array
(
[0] => stdClass Object
(
[specific_exercise.distance] => 14
)
[1] => stdClass Object
(
[specific_exercise.avg_pace] => 7.5
)
)
)
相反,我希望将其转换为:
stdClass Object
(
[details] => Array
(
[specific_exercise.distance] => 14
[specific_exercise.avg_pace] => 7.5
)
)
将json_解码结构转换为更有效的PHP结构的最佳方式是什么 例如,如果您能够控制JSON,那么更改JSON可能是更好的解决方案
{
"details":
{
"specific_exercise.distance" : "14",
"specific_exercise.avg_pace" : "7.5"
}
}
编辑:
然后您可以使用此方法:
function parseJsonFormat($json)
{
$json_object = json_decode($json);
$details_result = array();
foreach($json_object['details'] as $detail)
{
$details_result = array_merge($details_result, get_object_vars($detail));
}
$json_object['details'] = $details_result;
return $json_object;
}
您可以进一步修改该方法以适用于每个数组,而不仅仅是details键 要将多个关联子阵列猛击在一起,请使用:
call_user_func_array("array_merge", (array)$subarray)
其中$subarray表示案例中的详细信息,您将结果分配回
只能在数组上工作,不能在对象上工作,所以最好先用第二个参数指示json_解码。您必须手动迭代和替换内容。是的,这正是我想要做的。遗憾的是,有一些技术原因我不能:谢谢@sensor,您的编辑工作非常出色。