如何使用 php 将所有数组(包括关联数组)制作为单级数组?

how to make an all arrays (including associative array) to single level of array using php?

希望你能帮我解决这个问题。因为我正在尝试对它们重新排序,但我首先需要使 be 处于数组的单一级别。从关联数组到单个数组。

$MY_ASSOC_ARRAY
Array
(
    [0] => Array
        (
            [MAIN_ID] => 1
            [ORDER] => 1
            [NAME] => Animal
            [PARENT_ID] => 0
            [childs] => Array
                (
                    [0] => Array
                        (
                            [MAIN_ID] => 4
                            [ORDER] => 4
                            [NAME] => doggie
                            [PARENT_ID] => 1
                            [childs] => Array
                                (
                                    [0] => Array
                                        (
                                            [MAIN_ID] => 18
                                            [ORDER] => 18
                                            [NAME] => hunting
                                            [PARENT_ID] => 4
                                            [childs] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [MAIN_ID] => 21
                                                            [ORDER] => 21
                                                            [NAME] => setter
                                                            [PARENT_ID] => 18
                                                        )

                                                    [1] => Array
                                                        (
                                                            [MAIN_ID] => 22
                                                            [ORDER] => 22
                                                            [NAME] => pointer
                                                            [PARENT_ID] => 18
                                                        )

                                                )
                                        )

                                    [1] => Array
                                        (
                                            [MAIN_ID] => 19
                                            [ORDER] => 19
                                            [NAME] => companion
                                            [PARENT_ID] => 4
                                        )
                                )
                        )
                )
        )
)

好吧,现在数组不应该在那个多级(关联)数组中,而是看起来像这样:

   Array
(
    [0] => Array
        (
            [MAIN_ID] => 1
            [ORDER] => 1
            [NAME] => Animal
            [PARENT_ID] => 0
        )

    [1] => Array
        (
            [MAIN_ID] => 4
            [ORDER] => 4
            [NAME] => doggie
            [PARENT_ID] => 1
        )

    [2] => Array
        (
            [MAIN_ID] => 18
            [ORDER] => 18
            [NAME] => hunting
            [PARENT_ID] => 4
        )

    [3] => Array
        (
            [MAIN_ID] => 21
            [ORDER] => 21
            [NAME] => setter
            [PARENT_ID] => 18
        )

    [4] => Array
        (
            [MAIN_ID] => 22
            [ORDER] => 22
            [NAME] => pointer
            [PARENT_ID] => 18
        )

    [5] => Array
        (
            [MAIN_ID] => 19
            [ORDER] => 19
            [NAME] => companion
            [PARENT_ID] => 4
        )
)

我不确定如何在不使用过多内存的情况下以最有效的方式实现这一点,因为使用 Php Codeigniter 会影响速度。谢谢!

[更新#1] 这是我试过的代码,但顺序不同

foreach($tree as $key => $value) {
    $single[] = $value;
}

这是这次失败尝试的输出...

Array
(
    [0] => Array
        (
            [MAIN_ID] => 1
            [ORDER] => 1
            [NAME] => Animal
            [PARENT_ID] => 0
        )

    [1] => Array
        (
            [MAIN_ID] => 4
            [ORDER] => 4
            [NAME] => doggie
            [PARENT_ID] => 1
        )

    [2] => Array
        (
            [MAIN_ID] => 18
            [ORDER] => 18
            [NAME] => hunting
            [PARENT_ID] => 4
        )

    [3] => Array
        (
            [MAIN_ID] => 19
            [ORDER] => 19
            [NAME] => companion
            [PARENT_ID] => 4

        )

    [4] => Array
        (
            [MAIN_ID] => 21
            [ORDER] => 21
            [NAME] => setter
            [PARENT_ID] => 18
        )

    [5] => Array
        (
            [MAIN_ID] => 22
            [ORDER] => 22
            [NAME] => pointer
            [PARENT_ID] => 18
        )
)

[NAME] => 同伴应该在最后一个数组而不是第 4 个([3] => 数组)

更新#2:

对否决票感到难过...如果这个问题对你没有用

<?php
    $array =  Array(
    0 => Array
        (
            'MAIN_ID' => 1,
            'ORDER' => 1,
            'NAME' => 'Animal',
            'PARENT_ID' => 0,
            'childs' => Array
                (
                    0 => Array
                        (
                            'MAIN_ID' => 4,
                            'ORDER' => 4,
                            'NAME' => 'doggie',
                            'PARENT_ID' => 1,
                            'childs' => Array
                                (
                                    0 => Array
                                        (
                                            'MAIN_ID' => 18,
                                            'ORDER' => 18,
                                            'NAME' => 'hunting',
                                            'PARENT_ID' => 4,
                                            'childs' => Array
                                                (
                                                    0 => Array
                                                        (
                                                            'MAIN_ID' => 21,
                                                            'ORDER' => 21,
                                                            'NAME' => 'setter',
                                                            'PARENT_ID' => 18,
                                                        ),

                                                    1 => Array
                                                        (
                                                            'MAIN_ID' => 22,
                                                            'ORDER' => 22,
                                                            'NAME' => 'pointer',
                                                            'PARENT_ID' => 18,
                                                        )

                                                )
                                        ),

                                    1 => Array
                                        (
                                            'MAIN_ID' => 19,
                                            'ORDER' => 19,
                                            'NAME' => 'companion',
                                            'PARENT_ID' => 4,
                                        )
                                )
                        )
                )
        )
);
$out = [];
$out = generateArray($array, $out);
print_r($out);

function generateArray($in, $out){
    foreach($in as $value){
        $childs = false;
        if(isset($value['childs'])){
            $childs = $value['childs'];
            unset($value['childs']);
        }
        $out[] = $value;
        if($childs)
            $out = generateArray($childs, $out);
    }
    return $out;
}
?>