Hallo!
Ich steh grad auf dem Schlauch...
Ich möchte eine Funktion schreiben, die wie bei einem Checkbox-Baum die Elternelemente abhängig von dem Wert der einzelnen Elemente ggf. anpasst, also in unten genanntem Beispiel
- "Nordamerika" active=1 setzt (weil USA active=1),
- "Amerika" active=1 setzt (weil USA active=1, bzw. dann Nordamerika active=1),
- "Nicht-EU" active=1 setzt (weil Schweiz active=1),
- "Europa" active=1 setzt (weil Schweiz active=1, bzw. dann Nicht-EU active=1)
Irgendwie muss das ja mit einer rekursiven Funktion lösbar sein, aber ich komme im Moment nicht drauf wie...
Jemand eine Idee?
Danke!
Andreas
Beispiel:
<?php
$laender=array(
array("name"=>"Amerika", "active"=>0,
"children"=>array(
array("name"=>"Nordamerika", "active"=>0, "children"=>
array("name"=>"USA", "active"=>1),
array("name"=>"Kanada", "active"=>0)),
array("name"=>"Südamerika", "active"=>0, "children"=>
array("name"=>"Chile", "active"=>0),
array("name"=>"Argentinien", "active"=>0))
)
),
array("name"=>"Europa", "active"=>0,
"children"=>array(
array("name"=>"EU", "active"=>0, "children"=>
array("name"=>"Deutschland", "active"=>0),
array("name"=>"Österreich", "active"=>0)),
array("name"=>"Nicht-EU", "active"=>0, "children"=>
array("name"=>"Schweiz", "active"=>1)),
)
)
);
print_r($laender);
?>
Ausgabe von print_r():
Array
(
[0] => Array
(
[name] => Amerika
[active] => 0
[children] => Array
(
[0] => Array
(
[name] => Nordamerika
[active] => 0
[children] => Array
(
[name] => USA
[active] => 1
)
[0] => Array
(
[name] => Kanada
[active] => 0
)
)
[1] => Array
(
[name] => Südamerika
[active] => 0
[children] => Array
(
[name] => Chile
[active] => 0
)
[0] => Array
(
[name] => Argentinien
[active] => 0
)
)
)
)
[1] => Array
(
[name] => Europa
[active] => 0
[children] => Array
(
[0] => Array
(
[name] => EU
[active] => 0
[children] => Array
(
[name] => Deutschland
[active] => 0
)
[0] => Array
(
[name] => Österreich
[active] => 0
)
)
[1] => Array
(
[name] => Nicht-EU
[active] => 0
[children] => Array
(
[name] => Schweiz
[active] => 1
)
)
)
)
)
Gewünschtes Ergebnis:
<?php
$laender_neu=array(
array("name"=>"Amerika", "active"=>1,
"children"=>array(
array("name"=>"Nordamerika", "active"=>1, "children"=>
array("name"=>"USA", "active"=>1),
array("name"=>"Kanada", "active"=>0)),
array("name"=>"Südamerika", "active"=>0, "children"=>
array("name"=>"Chile", "active"=>0),
array("name"=>"Argentinien", "active"=>0))
)
),
array("name"=>"Europa", "active"=>1,
"children"=>array(
array("name"=>"EU", "active"=>0, "children"=>
array("name"=>"Deutschland", "active"=>0),
array("name"=>"Österreich", "active"=>0)),
array("name"=>"Nicht-EU", "active"=>1, "children"=>
array("name"=>"Schweiz", "active"=>1)),
)
)
);
?>