-1

次の JSON 構造:

{
    "details":
    [
        {"specific_exercise.distance" : "14",},
        {"specific_exercise.avg_pace" : "7.5"}
    ]
}

json_decode() を使用すると、次のように変換されます。

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_decode() 構造からより効果的な PHP 構造に変換する最良の方法は何ですか?

4

2 に答える 2

2

複数の連想部分配列をまとめて使用するには、次のようにします。

 call_user_func_array("array_merge", (array)$subarray)

Where$subarraydetails、あなたの場合、結果を割り当てる場所を意味します。

オブジェクトではなく配列でのみ機能するため、json_decode最初に 2 番目のパラメーターで指示することをお勧めします。

于 2013-02-10T17:55:45.970 に答える
2

たとえば、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;
}

詳細キーだけでなく、各配列に対して機能するようにメソッドをさらに変更できます。

于 2013-02-10T17:44:18.903 に答える