munkmill
22-04-2005, 20:00
Hallo,
ich habe folgendes Problem.
Ein mehrdimensionales Array wird per foreach durchsucht.
Bsp. für's Array:
$navigation = array (
1 => array ("name" => "Home",
"href" => "home/home.php"),
2 => array ("name" => "Links",
"href" => "links/links.php",
"sub" => array ( 21 => array (....
array...))),
3 => array ("name" => "Kontakt",
"href" => "contact/contact.php"));
Die Funktion, die das Array durchsucht ist rekursiv und soll nur dann den Array-Inhalt ausgeben, wenn das Array ein Sub-Array ist. Vor allem soll nur das Sub-Array ausgegeben werden.
Der Quelltext dazu:
function getArrayContent ($navigation, $level) {
$path = $this->getSelectedPath();
$active = ($id == $_SESSION['id']) || ((isset($path[$level])) && ($path[$level] == $id)) ? true : false;
foreach ($navigation as $id => $entry) {
if ($level) {
echo "....";
} // if
if ($active && isset($entry['sub'])) {
$this->getSubNavigation ($entry['sub'], $level + 1);
} // if
}
Also soll er wirklich nur dann was ausgeben, wenn er sich momentan im Unter-Array befindet. Foreach hat aber die Eigenheit, ins Unter-Array abzusteigen und dann den Rest aus dem Ober-Array zu lesen.
Weiß jemand Rat?
Viele Grüße,
Jan
ich habe folgendes Problem.
Ein mehrdimensionales Array wird per foreach durchsucht.
Bsp. für's Array:
$navigation = array (
1 => array ("name" => "Home",
"href" => "home/home.php"),
2 => array ("name" => "Links",
"href" => "links/links.php",
"sub" => array ( 21 => array (....
array...))),
3 => array ("name" => "Kontakt",
"href" => "contact/contact.php"));
Die Funktion, die das Array durchsucht ist rekursiv und soll nur dann den Array-Inhalt ausgeben, wenn das Array ein Sub-Array ist. Vor allem soll nur das Sub-Array ausgegeben werden.
Der Quelltext dazu:
function getArrayContent ($navigation, $level) {
$path = $this->getSelectedPath();
$active = ($id == $_SESSION['id']) || ((isset($path[$level])) && ($path[$level] == $id)) ? true : false;
foreach ($navigation as $id => $entry) {
if ($level) {
echo "....";
} // if
if ($active && isset($entry['sub'])) {
$this->getSubNavigation ($entry['sub'], $level + 1);
} // if
}
Also soll er wirklich nur dann was ausgeben, wenn er sich momentan im Unter-Array befindet. Foreach hat aber die Eigenheit, ins Unter-Array abzusteigen und dann den Rest aus dem Ober-Array zu lesen.
Weiß jemand Rat?
Viele Grüße,
Jan