Array
André Laugks
- php
Hallo!
Ich möchte/muß eine Navigation in einem Array abbilden. Dieses Array möchte ich dann rekursiv durchlaufen. Das funktioniert auch soweit.
Nur bin ich nicht wirklich zu frieden.
$nav = array(
'1.1 Ebene',
array('2/1 Ebene',
'2/2 Ebene',
array('3/1 Ebene',
array('4/1 Ebene',
'4/2 Ebene'
)
)
),
'1.2 Ebene',
array('2/1 Ebene',
'2/2 Ebene',
array('3/1 Ebene',
array('4/1 Ebene',
'4/2 Ebene'
)
)
),
);
<?PHP
function print_var($var)
{
echo "<pre>";
echo var_dump($var);
echo "</pre>";
}
$test['1. M'][] = "1 Menü";
$test['1. M']['1.1 M'][] = "1.1 Menü";
$test['1. M']['1.2 M'][] = "1.2 Menü";
$test['1. M']['1.3 M'][] = "1.3 Menü";
$test['1. M']['1.3 M']['1.3.1 M'][] = "1.3.1 Menü";
$test['1. M']['1.3 M']['1.3.2 M'][] = "1.3.2 Menü";
$test['2. M'][] = "2. Menü";
function rek_array($nav_array, $tiefe)
{
$tiefe++;
while(list($key, $array) = each($nav_array))
{
if(is_array($array))
{
rek_array($array, $tiefe);
}
else
{
echo "<div style="margin-left:" . (10*$tiefe) . "">" . $array . " (" . $tiefe . ")</div>\n";
}
}
}
rek_array($test, -1);
print_var($test);
?>
MfG, André Laugks
Upss, eigentlich wollte ich auf die Vorschau klicken.
Hallo!
Ich möchte/muß eine Navigation in einem Array abbilden. Dieses Array möchte ich dann rekursiv durchlaufen. Das funktioniert auch soweit.
---------------------------------><8-------------------------------
<?PHP
$test['1. M'][] = "1 Menü";
$test['1. M']['1.1 M'][] = "1.1 Menü";
$test['1. M']['1.2 M'][] = "1.2 Menü";
$test['1. M']['1.3 M'][] = "1.3 Menü";
$test['1. M']['1.3 M']['1.3.1 M'][] = "1.3.1 Menü";
$test['1. M']['1.3 M']['1.3.2 M'][] = "1.3.2 Menü";
$test['2. M'][] = "2. Menü";
function rek_array($nav_array, $tiefe)
{
$tiefe++;
while(list($key, $array) = each($nav_array))
{
if(is_array($array))
{
rek_array($array, $tiefe);
}
else
{
echo "<div style="margin-left:" . (10*$tiefe) . "">" . $array . " (" . $tiefe . ")</div>\n";
}
}
}
rek_array($test, -1);
?>
---------------------------------><8-------------------------------
Mit dieser Version bin ich nun einigermaßen zufrieden, wenn ich folgende Array-Ansätze betrachte.
$nav = array(
array("1. M" => "1. Menü",
array(
array("1.1 M" => "1.1 Menü"),
array("1.2" => "1.1 Menü")
)
)
);
$nav = array(
'1.1 Ebene',
array('2/1 Ebene',
'2/2 Ebene',
array('3/1 Ebene',
array('4/1 Ebene',
'4/2 Ebene'
)
)
),
'1.2 Ebene',
array('2/1 Ebene',
'2/2 Ebene',
array('3/1 Ebene',
array('4/1 Ebene',
'4/2 Ebene'
)
)
),
);
Ich habe da noch folgenden Ansatz, daß mir aber diese Menüstruktur generiert.
Blumen
Blumen
Balkonblumen
Balkonblumen
Zimmerpflanzen
Zimmerpflanzen
Das kommt, weil ich in jedem Array zwei Elemente habe. Ich komme aber nicht drauf, wie ich das "abstellen" kann.
------------------------------><8----------------------------------
<?PHP
$nav = array(
array("titel" => "Blumen", "href" => "blumen.html",
array("titel" => "Balkonblumen", "href" => "balkonblumen.html"),
array("titel" => "Zimmerpflanzen", "href" => "zimmerpflanzen.html")
)
);
function rek_array($nav_array, $tiefe)
{
$tiefe++;
while(list($key, $array) = each($nav_array))
{
if(is_array($array))
{
rek_array($array, $tiefe);
}
else
{
echo "<div style="margin-left:" . (10*$tiefe) . ""><a href="" . $nav_array['href'] . "">" . $nav_array['titel'] . "</a></div>\n";
}
}
}
rek_array($nav, 0);
?>
----------------------------------><8-------------------------------
Hat jemand schon einmal sowas gemacht und kann mir ein praktischen Ansatz liefern auch wenn er ganz anders ist oder ein paar Tipps auf Lager?
MfG, André Laugks
Hi,
so könnte es evtl. gehen.
function rek_array($nav_array, $tiefe)
{
$tiefe++;
while(list($key, $array) = each($nav_array))
{
if(is_array($array))
{
rek_array($array, $tiefe);
}
else
{
if ($key != "title") { continue; }
echo "<div style="margin-left:" . (10*$tiefe) . ""><a href="" . $nav_array['href'] . "">" . $nav_array['titel'] . "</a></div>\n";
}
}
}
Hallo!
if ($key != "title") { continue; }
Das hatte ich auch schon überlegt. Leider habe ich eine variable Anzahl an Einträgen, also nicht nur "titel" und "href".
MfG, André Laugks
Hallo!
Ich möchte/muß eine Navigation in einem Array abbilden. Dieses Array möchte ich dann rekursiv durchlaufen. Das funktioniert auch soweit.
Wie das in PERL geht, siehe
http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?query_string=traverse&mode=simple_text
Gruss, Rolf