PHP Json array ausgeben

Hydrano

Lieutenant
Registriert
März 2008
Beiträge
936
Hey

folgendes Problem. Ich habe ein json decoded welches als Array vorliegt, aber wo ich mit einer foreach und echo keine Ausgabe bekomme.

Das Array sieht so aus: (Array ist natürlich sehr viel länger, dient hier nur der Veranschaulichung)
Code:
[
 {
   "user_id":"1234567",
   "username":"Hydrano",
   "Weitere":"bla"
 }
]

Das auslesen:
PHP:
$user= $_REQUEST["user"];
$array = get_user($array, 0, 6); // Die Methode stammt aus einer API und liefert das oben zu sehende Ergebnis 

echo "START foreach<br>";
//var_dump($array); // Gibt mir wunderschön das ganze aus

foreach ($array as $key => $value) {
    echo "Key: ".$key." Value: ".$value."<br />"; // gibt gar nichts aus :(
}

echo "ENDE foreach<br>";

Ich habe erst vor par Tagen angefangen mit PHP und mir zu den Arrays auch schon zich Beispiele angesehen, aber auf mein Array bezogen funktioniert einfach nichts, bin mal gespannt welche Kleinigkeit ich da jetzt falsch mache :freak:

Aktuelle Ausgabe ohne var_dump ist einfach nur:
Code:
START foreach
ENDE foreach

Mit var_dump sehe ich dann im endeffekt das:
Code:
START foreach
string(5164) "[{"user_id":"1234567","username":"Hydrano"}]"
ENDE foreach
 
Zuletzt bearbeitet:
Hi,

scheint für mich alles korrekt, wenn var_dump tatsächlich ausgibt das $array nur ein string ist.

Kenn mich mit PHP jetzt nicht so gut aus, aber scheinbar kann dann PHP nicht über einen string iterieren.

Du musst noch die Methode json_decode auf deine $array-Variable anwenden.
 
Wahrscheinlich liefert get_user() gar kein Array zurück?
 
Bevor du über das Array iterierst:
$array = json_decode($array, true);

Wenn du das error handling richtig eingestellt hast, müsste php dir eigentlich auch folgendes sagen

<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>[...][...]</b> on line <b>{line}</b><br />
 
Zuletzt bearbeitet:
Code:
[
 {
   "user_id":"1234567",
   "username":"Hydrano",
   "Weitere":"bla"
 }
]

ist eine liste von arrays, d.h. bei einem foreach auf das json objekt hast du nicht gleich key/value paare sondern listeneinträge, wobei jedes listenelement ein array ist:

Code:
$user= $_REQUEST["user"];
$list = get_user($array, 0, 6);

// eventuell dekodieren - ka, was dein get_user liefert
// $list = json_decode($list);
 
foreach ($list as $element) {
  foreach($element as $key => $value){
    echo "Key: ".$key." Value: ".$value."<br />";
  }
}

sollte funktionieren :)
 
Zuletzt bearbeitet: (json_decode)
0x8100 schrieb:
Code:
[
 {
   "user_id":"1234567",
   "username":"Hydrano",
   "Weitere":"bla"
 }
]

ist eine liste von arrays, d.h. bei einem foreach auf das json objekt hast du nicht gleich key/value paare sondern listeneinträge, wobei jedes listenelement ein array ist:

Code:
$user= $_REQUEST["user"];
$list = get_user($array, 0, 6);

// eventuell dekodieren - ka, was dein get_user liefert
// $list = json_decode($list);
 
foreach ($list as $element) {
  foreach($element as $key => $value){
    echo "Key: ".$key." Value: ".$value."<br />";
  }
}

sollte funktionieren :)

Hab vielen Dank, das war es! Musste es nochmal dekodieren und die verschachtelte Schleife tut dann ihr übriges. :)
 
Zurück
Oben