PHP: özyinelemeli dizi değiştirme?

0 Cevap php

Ben şu dizi yineler düzleştirmek ve uygulanabilir çocuklar için ebeveyn id eklemek için bir işlevi yapmak için çalıştık. Ben sadece iş yapamaz, bu yüzden herkes burada ne bir fikir olduğunu umuyorum:

İşte başlangıç ​​noktası bulunuyor:

Array
(
    [0] => Array (
            [id] => 1
            [children] => array (
                [id] => 2
                [children] => Array (
                    [0] => Array (
                            [id] => 3
                    )
             )
        )
)

Beklenen sonuç:

Array (

    [0] => array ( 
        [id] => 1
    )

    [1] => array ( 
        [id] => 2
    )

    [2] => array ( 
        [id] => 3,
        [parent] => 2
    ) 

)

Herkes bana doğru yönde işaret umuyoruz. Thanks a lot!

Çözüm (Teşekkürler Oli için!):

$output = array();

        function dejigg($in) {
            global $output;

            if (!isset($in['children'])) {
                $in['children'] = array();
            }
            $kids = $in['children'] or array();
            unset($in['children']);
            if (!isset($in['parent'])) {
                $in['parent'] = 0; // Not neccessary but makes the top node's parent 0.
            }
            $output[] = $in;

            foreach ($kids as $child) {
                $child['parent'] = $in['id'];
                dejigg($child); // recurse
            }

            return $output;
        }

        foreach ($array as $parent) {
            $output[] = dejigg($parent);
        }

        $array = $output;
        print("<pre>".print_r($array,true)."</pre>");

0 Cevap