Zum Inhalt springen

PHP Array-Problem

Erstellt am 14. Februar 2008 · 6 Antworten · letzte Antwort am 14. Februar 2008

Tags: Frage

hoppingwallaby ·

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!

einpraegsam.​net ·
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

Unbekannter Benutzer ·

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;
Stoneage ·

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!?

Unbekannter Benutzer ·

@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

Stoneage ·

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