tag!
hab hier nun Dank Eurer hilfe ein nicht all zu einfaches script.
die funktion kategorie2array($kategorie,$nr) hat die aufgabe einen string $kategorie wie z.b. 'foo|bar|bla|...' umzuwandeln in einen array wie $arr_kategorie['foo']['bar']['bla']...['']=$nr;
diesem array soll vor der rückgabe noch ein blindes feld [''] angehängt werden mit der $nr als wert.
(dieser vorgang ist nicht erlässlich, da ich die [''] einträge als optionsparameter verwende...)
und so siehts in php aus:
<?
function kategorie2array($kategorie,$nr)
{
$kategorie=explode("|",$kategorie,10);
$kategorie_rest='';
if(is_array($kategorie)AND(count($kategorie)>1))
{
foreach($kategorie AS $i => $kategorie_)
{
if($i>0)
$kategorie_rest.=$kategorie_.'|';
}
}
if(isset($kategorie[1]) && $kategorie[1]!='')
{
$neu=kategorie2array($kategorie_rest,$nr+1);
$arr_kategorie[$kategorie[0]]=$neu;
}
else
{
$arr_kategorie[$kategorie[0]]['']=$nr;
}
return ($arr_kategorie);
}
?>
soweit funktioniert es auch.
doch nun soll dieser vorgang häufiger durchgeführt werden und das ergebniss aller funktionsabläufe in einem gesamten array abgelegt werden:
<?
$arr_kategorie_neu[]=kategorie2array("a|aa|aaa|",20);
$arr_kategorie_neu[]=kategorie2array("a|aa|",20);
$arr_kategorie_neu[]=kategorie2array("a|",20);
$arr_kategorie_neu[]=kategorie2array("b|",20);
$arr_kategorie_neu[]=kategorie2array("c|",20);
$arr_kategorie_neu[]=kategorie2array("c|cc|",20);
$arr_kategorie_neu[]=kategorie2array("c|cc|ccc|",20);
foreach($arr_kategorie_neu AS $arr_kategorie)
{
$arr_alles=array_merge($arr_kategorie,$arr_alles);
}
print_r($arr_alles);
?>
doch das ergebnis ist nicht wie erwartet.
testet am besten selbst, wenn Ihr mir nicht glaubt, dass es scheitert.
so sieht die rüeckgabe aus:
Zitat:
Array
(
[c] => Array
(
[] => 20
)
[b] => Array
(
[] => 20
)
[a] => Array
(
[aa] => Array
(
[aaa] => Array
(
[] => 22
)
)
)
)
VIELEN DANK für erkannten fehler und
NOCH MEHR DANK für einen lösungsvorschlag.
PS: einiges in dem script mag einigen überflüssig erscheinen, ist jedoch erforderlich, da der spass noch lange nicht vollendet ist, sondern noch erweitert wird...