tiefgehende Navigation...
depp
- php
moin
hab nen array:
$kategorien["Hauptkategorie"]="home.php"
$kategorien["Hauptkategorie"]["Kategorie1"]="parse.php?param=1,1"
$kategorien["Hauptkategorie"]["Kategorie1"]["Unterpunkt1"]="parse.php?param=1,1,1"
$kategorien["Hauptkategorie"]["Kategorie2"]="parse.php?param=1,2"
...
die tiefe der kategorien sollte nicht eingeschränkt sein!
also es sollte auch dfas möglich sein.
kategorien["Hauptkategorie"]["Kategorie1"]["Unterpunkt1"]["Unterpunkt1"]["Unterpunkt1"]="parse.php?param=1,1,1,1,1,1"
wenn man das mit foreach macht, so ist man wohl in der anzahl eingeschränkt :-(
habt Ihr einen lösungsvorschlag für ne flexiblere methode?
danke
Holladiewaldfee,
hab nen array:
aber nicht ganz so ...
$kategorien["Hauptkategorie"]="home.php"
Hier weist Du $kategorien["Hauptkategorie"] einen String zu ...
$kategorien["Hauptkategorie"]["Kategorie1"]="parse.php?param=1,1"
... um ihn gleich anschließend durch ein Array zu überschreiben ... sehr gut ;-)
$kategorien["Hauptkategorie"]["Kategorie1"]["Unterpunkt1"]="parse.php?param=1,1,1"
Hier der gleiche Batz ...
die tiefe der kategorien sollte nicht eingeschränkt sein!
Prinzipiell kannst Du Arrays _ziemlich_ tief verschachteln - so tief, daß Du kaum je an die Grenze gelangen wirst (wenn eine solche existieren sollte).
kategorien["Hauptkategorie"]["Kategorie1"]["Unterpunkt1"]["Unterpunkt1"]["Unterpunkt1"]="parse.php?param=1,1,1,1,1,1"
Jor ... aber so wie ich das sehe hast Du die darüberliegenden Kategoriern mal wieder abgetötet, indem Du die Strings durch Arrays ersetzt.
wenn man das mit foreach macht, so ist man wohl in der anzahl eingeschränkt :-(
? ? ?
Beispielcode bitte.
habt Ihr einen lösungsvorschlag für ne flexiblere methode?
Zuallererst solltest Du darauf achten, die höheren Ebenen nicht zu zerstören, indem Du die ihnen zugeordneten Elemente durch die tieferen Ebenen ersetzt.
Ciao,
Harry
:-(
Weiß ehrlichgesagt, nicht, wie ichs hierfür umformen muss.
So siehts momentan aus:
foreach($cats AS $i => $cat)
{
echo("<span class=Ebene1>".$i."</span><br>");
if(count($cat)>1)
{
foreach($cat AS $j => $cat_)
{
echo("<span class=Ebene2>".$j."</span><br>");
}
}
}
hi,
Weiß ehrlichgesagt, nicht, wie ichs hierfür umformen muss.
das stichwort "rekursion" wurde dir genannt, also informiere dich bitte darüber! http://www.google.de/search?q=rekursion
gruß,
wahsaga
hab nun folgende funktion angefertigt und muss zu meinem bedauern feststellen, dass irgendwas am system nicht stimmt.
schließlich wird nur bis zur zweiten ebene gearbeitet :-(
könnt Ihr den fehler finden?
<?
function auslesen($cat,$tmp,$ausgabe,$ebene)
{
foreach($cat AS $i => $cat_)
{
$tmp_=$tmp;
$tmp_=str_replace("#nr#",$ebene,$tmp_);
$tmp_=str_replace("#cat#",$i,$tmp_);
$i_=$i;
$i_=str_replace(" ",'_',$i_);
$i_=str_replace("&",'_',$i_);
$i_=str_replace("=",'_',$i_);
$tmp_=str_replace("#cat_#",$i_,$tmp_);
$ausgabe.=$tmp_;
if(count($cat_)>1)
{
$ausgabe=auslesen($cat[$i],$tmp,$ausgabe,($ebene+1));
}
}
return $ausgabe;
}
?>
danke
function auslesen($cat,$tmp,$ebene)
{
$nr=0;
foreach($cat AS $i => $cat_)
{
$tmp_=$tmp;
$tmp_=str_replace("#nr#",$ebene,$tmp_);
$tmp_=str_replace("#cat#",$i,$tmp_);
$i_=$i;
$i_=str_replace(" ",'_',$i_);
$i_=str_replace("&",'_',$i_);
$i_=str_replace("=",'_',$i_);
$tmp_=str_replace("#cat_#",$i_,$tmp_);
$ausgabe.=$tmp_;
if(count($cat_)>1)
{
$ausgabe.=auslesen($cat[$i],$tmp,($ebene+1));
}
}
return $ausgabe;
}
hi,
könnt Ihr den fehler finden?
nicht auf anhieb.
schließlich wird nur bis zur zweiten ebene gearbeitet :-(
und wie viele einträge hat das betreffende array auf der ebene? kann es vielleicht sein, dass das nur einer ist?
dann würde ja
if(count($cat_)>1)
nicht greifen, und somit auch die rekursion an dieser stelle nicht auf die nächste unterebene springen.
das soll wohl den versuch darstellen abzuprüfen, ob es sich beim aktuellen element noch um ein array handelt?
dazu solltest du einfach die funktion is_array() benutzen, die kann dir das nämlich ganz genau sagen ;-)
http://www.php.net/manual/de/function.is-array.php
gruß,
wahsaga
o.t.................
hi,
abgesehen von Harrys hinweisen ...
wenn man das mit foreach macht, so ist man wohl in der anzahl eingeschränkt :-(
nein, wieso denn?
rekursion wäre hier wohl das stichwort, dass du brauchst.
prüfen, ob die nächste bzw. aktuelle ebene immer noch ein array ist, geht ja ganz leicht.
gruß,
wahsaga
moin
hab nen array:
ich auch
die tiefe der kategorien sollte nicht eingeschränkt sein!
also es sollte auch dfas möglich sein.
kategorien["Hauptkategorie"]["Kategorie1"]["Unterpunkt1"]["Unterpunkt1"]["Unterpunkt1"]="parse.php?param=1,1,1,1,1,1"
das ist auf jeden fall möglich
wenn man das mit foreach macht, so ist man wohl in der anzahl eingeschränkt :-(
nein.
habt Ihr einen lösungsvorschlag für ne flexiblere methode?
ich hab leider wenig ahnung, was du überhaupt willst. aber ich ahne, dass du vielleicht über rekursion nachdenken solltest. überleg dir doch mal eine funktion, die genau einen 'loop' deiner arbeit macht. dies efunktion kannste dann auf deinen array (oder string, oder was?) loslassen.
bei einer bestimmten bedingung soll sich diese funktion selbst aufrufen. sie wird sich nun so oft aufrufen, wie die bedingung auftritt. die verschtelungstiefe ist der funktion egal, wenn du ihr z.b. beim aufruf immer die letzte arrayebene mitgibst.
danke
andi