Hallo Forum!
Ich schreibe gerade eine eigene Extension und habe aber ein wahrscheinlich relativ einfaches PHP-Problem. Ich habe ein Ausgangsarray in der Form:
$array = array(
'system'=>array(
'test'=>'installed',
),
'configuration'=>array(
'dbhost'=>'localhost',
),
);
und will daraus einen String der Form
[system]
test = "installed"
[configuration]
dbhost = "localhost"
generieren. Der Name der einzelnen Array-Felder ist vor Funktionsaufruf leider nicht bekannt, eine Feld-ID für eine Schleife ist somit nicht vorhanden. Wie setze ich das um?
Danke für jede Hilfe!
hoppingwallaby schrieb
Hallo Forum!
Ich schreibe gerade eine eigene Extension und habe aber ein wahrscheinlich relativ einfaches PHP-Problem. Ich habe ein Ausgangsarray in der Form:
$array = array(
'system'=>array(
'test'=>'installed',
),
'configuration'=>array(
'dbhost'=>'localhost',
),
);
und will daraus einen String der Form
[system]
test = "installed"
[configuration]
dbhost = "localhost"
generieren. Der Name der einzelnen Array-Felder ist vor Funktionsaufruf leider nicht bekannt, eine Feld-ID für eine Schleife ist somit nicht vorhanden. Wie setze ich das um?
Danke für jede Hilfe!
Mit foreach kannst du die keys und die values auslesen...
http://de2.php.net/manual/de/control-structures.foreach.php
In etwa so:
$string = "";
//ebene 1
foreach($array as $key=>$value_array) {
$string .= "[".$key."]\n\n";
//ebene 2
foreach($value_array as $index=>$value) {
$string .= $index." = \"".$value."\"\n";
}
$string .= "\n";
}
print $string;
Super, vielen Dank! Hat einwandfrei funktioniert...
Die einfache Variante ist wohl so:
foreach ($array as $key => $arr) {
$output .= "[$key]\r\n";
foreach ($arr as $attr => $string) {
$output .= "$attr=\"$string\"\r\n";
}
}
echo $output;
Übrigens kriegst Du die Namen des Arrays mit dem Befehl array_keys heraus. Für eine Schleife brauchst Du keine Feld-ID (siehe foreach).
Nachtrag: Falls jemand Zeit und Lust hat, kann er/sie ja mal eine Version als Rekursion oder vielleicht was ganz anderes beitragen!?
@Tetramatrix:
Es obliegt wohl dem jeweiligen Programmierstil, welche Lösung man bevorzugt. PHP bietet da ja für alle was! 😉
Rein aus Interesse: Welchen Vorteil würde eine rekursive Lösung in diesem Fall haben, wenn ich für jede Dimension eine andere Ausgabe machen will?
lg, Reinhard
Hallo mtd04014,
ich will ja nicht überheblich sein, aber es ist doch ein Unterschied ob Du eine Array rekursiv oder iterativ durchläufst. Stichwort: Stacküberlauf.
Nur auf den Vorteil zu schielen, ist meiner Meinung auch nicht immer angebracht. Außerdem gibt es ja noch den Befehl array_keys. Ich glaube meine Aufforderung, doch andere Programmbeispiele beizusteuern, kann ja gar nicht so falsch sein.
MFG