1

親と子を持つ多次元配列があり、配列キーを変更したい

次のようになります。

Array
(
    [0] => stdClass Object
    (
        [id] => 108
        [parent_id] => 0
        [children] => Array
        (
            [0] => stdClass Object
            (
                 [id] => 71
                 [parent_id] => 108
                 [children] => Array
                 (
                     [0] => stdClass Object
                     (
                         [id] => 107
                         [parent_id] => 71
                         [children] => Array
                         (
                             [0] => stdClass Object
                             (
                                 [id] => 78
                                 [parent_id] => 107
                             )
                         )
                    )
                )
            )
        )
    )

    [1] => stdClass Object
    (
        [id] => 82
        [parent_id] => 0
    )

    [2] => stdClass Object
    (
        [id] => 84
        [parent_id] => 0
    )

    [3] => stdClass Object
    (
        [id] => 88
        [parent_id] => 0
    )

    [4] => stdClass Object
    (
        [id] => 92
        [parent_id] => 0
    )
)

たとえば、配列 [id] => 88 の下にある ID 108 の配列を移動したい。問題は、配列を新しい位置に移動することですが、子配列も移動することです。

4

1 に答える 1

0
function array_remove($array, $index) {
    array_splice($array, $index, 1, array());
    return $array;
}

function array_insert($array, $element, $index) {
    array_splice($array, $index, 0, array($element));
    return $array;
}

function array_move($array, $from, $to) {
    $element = $array[$from];
    $array = array_remove($array, $from);
    $array = array_insert($array, $element, $to - 1);
    return $array;
}

$array = array_move($array, 0, 4);
print_r($array);
于 2012-10-18T09:51:19.200 に答える