Ich hab ein verschachteltes Array das ich in einer Datenbank abspeichern möchte. Meine Schlussfolgerung war, dieses Array in einen String umwandeln und so abzuspechern. Kein Problem. Aber aus diesem String wieder ein Array zu machen war um einiges schwieriger.
Implode / Explode geht nicht so einfach, da das Array sehr verschachtelt ist.
Ich hab als Beispiel dieses Array:
dieses Array in String umwandeln war nicht so die Härte:
Ergebnis:
Aus diesem String ein Array zu machen schaff ich aber nicht....
mein Ansatz:
Ich weiß ja nicht, aber ich finde keine passenden Stringfunktionen...
Vllt gibt es ja einen Schmäh oder ich bin einfach zu dumm, aber hat vllt jemand einen Wink?
Implode / Explode geht nicht so einfach, da das Array sehr verschachtelt ist.
Ich hab als Beispiel dieses Array:
Code:
$kategorien=array(
"Leibchen"=>array("Hemden"=>"Hemden","T-Shirts"=>"T-Shirts","Pullover"=>array("Baumwolle"=>"Baumwolle","Polyester"=>"Polyester")),
"Hosen"=>array("Shorts"=>"Shorts","Kordhosen"=>"Kordhosen"),
"Unterwaesche"=>array("Socken"=>"Socken","Unterhosen"=>"Unterhosen"),
"Sonstiges"=>"Sonstiges");
dieses Array in String umwandeln war nicht so die Härte:
Code:
function auflisten($array){
static $string;
for($x=0;$x<count($array);$x++){
$string=$string.key($array)." ";
if(is_array(pos($array))){
$string=$string."(";
auflisten(pos($array));
$string=$string.") ";
}
next($array);
}
$string=chop($string);
return $string;
}{
Ergebnis:
Code:
Leibchen (Hemden T-Shirts Pullover (Baumwolle Polyester)) Hosen (Shorts Kordhosen) Unterwaesche (Socken Unterhosen) Sonstiges
Aus diesem String ein Array zu machen schaff ich aber nicht....
mein Ansatz:
Code:
function zerlegen($string) {
/*
- zählen wie viele Ebenen es gibt (wie viele ?(? gibt es)
- Das erste ?(? suchen ? Position1
- Das nächste ?)? suchen ? Position2
- Wenn dazwischen ein ?(? vorkommt:
o Zählen wie viele es sind
o Überspringe gleich viele ?)?
- ?$temp_inhalt? ist von Position1 bis Position2
- Das Wort vor ?(? zu einem Schlüssel im Array $kategorien mit dem Wert ?$temp_inhalt? machen
- Wenn es ?(? in ?$temp_inhalt? gibt dann
o die gleiche Prozedur mit ?$temp_inhalt?
o das erste Array zu einem Eintrag von $kategorien
- Das gleiche noch mal nach ?)?
*/
$anzahl=substr_count($string,'(');
$position1=stripos($string,"(");
$position_x=strpos($string,"(",$position1);
$pos_x=$position_x;
$position2=stripos($string,")")
if($position_x<$position2){
while($position_x<$position2){
$position_x=strpos($string,"(",$position_x);
$position2=strpos($string,")",$position_x);
}
}
$string_array=str_split($string);
for($x=$position1;$x<$position2;$x++){
$temp_inhalt=$temp_inhalt.$string_array[$x];
}
if($pos_x<$position2){
zerlegen($temp_inhalt);
}
//USW...
}
Ich weiß ja nicht, aber ich finde keine passenden Stringfunktionen...
Vllt gibt es ja einen Schmäh oder ich bin einfach zu dumm, aber hat vllt jemand einen Wink?