Wurmi: Array rekursiv nach oben ändern

Beitrag lesen

Das sieht ziemlich gut aus! :-)

ich hab jetzt mal versucht, das so einigermaßen umzusetzen, aber es klappt noch nicht so ganz.
Zwar gibt das Script korrekt aus, dass Amerika, Nordamerika, Europa und Nicht-EU active=1 werden soll, aber das Array selbst ändert sich nicht.

Hier mal mein kompletter Code nochmal zum Testen.
Kannst Du mir sagen, was daran noch falsch ist?

  
<pre>  
<?php  
$laender=array(  
	array("name"=>"Amerika", "active"=>0,  
        "children"=>array(  
            array("name"=>"Nordamerika", "active"=>0,  
                "children"=>array(  
                    array("name"=>"USA", "active"=>1),  
                    array("name"=>"Kanada", "active"=>0))  
            ),  
            array("name"=>"Südamerika", "active"=>0,  
                "children"=>array(  
                    array("name"=>"Chile", "active"=>0),  
                    array("name"=>"Argentinien", "active"=>0)  
                )  
            )  
        )  
	),  
	array("name"=>"Europa", "active"=>0,  
        "children"=>array(  
            array("name"=>"EU", "active"=>0,  
                "children"=>array(  
                    array("name"=>"Deutschland", "active"=>0),  
                    array("name"=>"Österreich", "active"=>0)  
                )  
            ),  
            array("name"=>"Nicht-EU", "active"=>0,  
                "children"=>array(  
                    array("name"=>"Schweiz", "active"=>1)  
                )  
            )  
        )  
	)  
);  
//print_r($laender);  
  
make_active_return_active($laender);  
  
function make_active_return_active (&$input) {  
    if(is_array($input['children'])){  
        foreach($input['children'] as $child){  
            $test=make_active_return_active($child);  
            if($test==1){  
                echo $input['name']." ".$test."\n";  
                $input['active'] = 1;  
            }  
        }  
        return $input['active'];  
    }  
    elseif($input['active']){  
        return $input['active'];  
    }  
    elseif($input[0]['name']){  
        foreach($input as $child){  
            make_active_return_active($child);  
        }  
    }  
}  
  
print_r($laender);  
?>  
</pre>