Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyświetlicz pojedyncze elementy z json?
Forum PHP.pl > Forum > PHP
Saki
  1. <?php
  2.  
  3. /*
  4. Chce wyswietlic pojedyncze elementy z jsona, ale coś mi nie działa, może mi ktoś pomóc? :)
  5. */
  6.  
  7.  
  8. $json = '
  9. {
  10. "users": [{
  11. "id": "368",
  12. "name": "iPhone",
  13. "from": "1500"
  14. },
  15. {
  16. "id": "18224",
  17. "name": "Kolekcja trampek",
  18. "from": "456"
  19. },
  20. {
  21. "id": "1093",
  22. "name": "aaa",
  23. "form": "123456"
  24. }]
  25. }
  26. ';
  27.  
  28.  
  29. $jsonDecode = json_decode($json);
  30.  
  31.  
  32. foreach ($jsonDecode as $dane)
  33. {
  34. echo '[' . $dane['id'] . '] <br />';
  35. echo $dane['name'].'<br />';
  36. }
  37.  
  38. ?>
nospor
Czemu nie sprawdzacie na czym operującie??
Zamieniłeś tekst na "tablice"? Super, sprawdź jak ona wygląda:
print_r($jsonDecode);
A wszystko stanie się prostsze.
hcn
Gdy wywołujesz funkcje json_decode(), jak poniżej, z jednym parametrem, którym jest JSON do zdekodowania to domyślnie funkcja nie zwróci ci tablicy ale obiekt klasy stdClass
  1. $jsonDecode = json_decode($json);

Czyli w tym wypadku będziesz miał obiekt klasy stdClass zawierający tablice obiektów (users), które będą miały właściwości takie jak "id","name","from"
Jeśli natomiast chcesz mieć zdekodowane dane z JSON w tablicy musisz wywołać json_decode() z drugim parametrem ustawionym na true, czyli:
  1. $decodedJson = json_decode($json,true);

Polecam dokumentację:
Dokumentacja: json_decode()
Dokumentacja: stdClass

A jak odczytać dane? Na przykład w następujący sposób:
  1.  
  2. $decodedJson = json_decode($json);
  3. /*
  4.   var_dump($decodedJson) i wszystko bedzie jasne ;)
  5.  
  6.   $decodedJson->users to nasza tablica obiektów
  7. */
  8. foreach ($decodedJson->users as $key => $userObject)
  9. {
  10. $key=$key+1;
  11. echo "[User $key] : ";
  12. echo "id: {$userObject->id}, ";
  13. echo "name: {$userObject->name}, ";
  14. echo "from: {$userObject->from}";
  15. echo "<br />";
  16. }

Skrypt wyświetli:
[User 1] : id: 368, name: iPhone, from: 1500
[User 2] : id: 18224, name: Kolekcja trampek, from: 456
[User 3] : id: 1093, name: aaa, from: 123456


Gdybyś sie jednak uparł przy tablicach to możesz zrobić tak:
  1. $decodedJson = json_decode($json,true);
  2. foreach ($decodedJson['users'] as $key => $userArray)
  3. {
  4. $key=$key+1;
  5. echo "[User $key] : ";
  6. echo "id: {$userArray['id']}, ";
  7. echo "name: {$userArray['name']}, ";
  8. echo "from: {$userArray['from']}";
  9. echo "<br />";
  10. }

Wynik oczywiście ten sam:
[User 1] : id: 368, name: iPhone, from: 1500
[User 2] : id: 18224, name: Kolekcja trampek, from: 456
[User 3] : id: 1093, name: aaa, from: 123456
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.