Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]file_get_contents, poziom zagłębienia zmiennej w API
Repthile
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 26.04.2015

Ostrzeżenie: (0%)
-----


Mój poziom - przedszkolak 1 klasa nerdsmiley.png

Wykorzystuje dane z API, problem zaczyna się dla mnie, gdy zmienna znajduje się głęboko i nie wiem jak ją wywołać.

Jeżeli odpoweidź API wygląda tak:
  1. {
  2. "status": "ok",
  3. "count": 1,
  4. "meta": {
  5. "count": 1
  6. },
  7. "data": {
  8. "001": {
  9. "points": 100
  10. }
  11. }


Kod, który działa:
  1. $url = 'http://api.url';
  2. $obj = json_decode(file_get_contents($url));
  3. echo $obj->data->{'001'}->points;



Jżeli API jest bardziej rozbudowane i pojawiają się kwadratowe nawiasy [ ] nie wiem jak wywołać dane w nich zawarte:
  1. {
  2. "status": "ok",
  3. "count": 1,
  4. "meta": {
  5. "count": 1
  6. },
  7. "data": {
  8. "001": {
  9. "place": [
  10. {
  11. "place_name": "name_1",
  12. "map": "map1",
  13. "attacked": false,
  14. "prime_time": 1430071203,
  15. "revenue": 120,
  16. "occupancy_time": 18,
  17. },
  18. {
  19. "place_name": "name_2",
  20. "map": "map2",
  21. "attacked": false,
  22. "prime_time": 1430071203,
  23. "revenue": 1200,
  24. "occupancy_time": 2,
  25. },
  26. {
  27. "place_name": "name_3",
  28. "map": "map3",
  29. "attacked": false,
  30. "prime_time": 1430071203,
  31. "revenue": 240,
  32. "occupancy_time": 1,
  33.  
  34. ]
  35. }
  36. }
  37. }


Chciałbym uzyskać przykładowo wszystkie place_name, albo map.
Gdy odwołuję się do samego echo $obj->data->{'001'}->place;
Otrzymuje błąd:
Array to string conversion

Próbowałem różnych dziwnych kombinacji, bez skutku.
Próbowałem znaleźć na to odpowiedź, ale nie wiem jak to nazwać i poszukiwania nie przyniosły rezultatu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
slash^
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

Ostrzeżenie: (0%)
-----


Masz tam tablice obiektów więc coś w stylu:

  1. $obj->data->{'001'}->place[0]->place_name;


gdzie [0] to index

  1. foreach( $obj->data->{'001'}->place as $key => $object {
  2.  
  3. $obj->data->{'001'}->place[ $key ]->place_name;
  4.  
  5. //lub
  6. $object->place_name;
  7. }


pisane z palca smile.gif

Ten post edytował slash^ 26.04.2015, 10:13:33


--------------------
d(^^)b
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:37