Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数字数组转换为关联数组_Php_Json - Fatal编程技术网

Php 将数字数组转换为关联数组

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

以下JSON结构:

{
    "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,您的编辑工作非常出色。