Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP]Szybka i sprawna metoda do obrobienia ARRAY
Forum PHP.pl > Forum > Przedszkole
designez
Witam, muszę kiedyś podciągnąć swoje umiejętności w php ale dziś niestety nie jest ten dzień i proszę o wskazówki jak najlepiej obrobić ARRAY który zwraca takie wartosci.

  1. Array ( [city] => Array ( [id] => 3089392 [name] => Olsztyn [coord] => Array ( [lon] => 19.659321 [lat] => 54.0616 ) [country] => PL [population] => 0 ) [cod] => 200 [message] => 0.3847 [cnt] => 7 [list] => Array ( [0] => Array ( [dt] => 1479376800 [temp] => Array ( [day] => 7.39 [min] => 7 [max] => 7.39 [night] => 7 [eve] => 7.39 [morn] => 7.39 ) [pressure] => 1004.98 [humidity] => 96 [weather] => Array ( [0] => Array ( [id] => 500 [main] => Rain [description] => light rain [icon] => 10d ) ) [speed] => 7.92 [deg] => 208 [clouds] => 92 [rain] => 1.29 ) [1] => Array ( [dt] => 1479463200 [temp] => Array ( [day] => 7.96 [min] => 6.99 [max] => 9.57 [night] => 9.45 [eve] => 9.28 [morn] => 6.99 ) [pressure] => 1005.36 [humidity] => 94 [weather] => Array ( [0] => Array ( [id] => 500 [main] => Rain [description] => light rain [icon] => 10d ) ) [speed] => 9.23 [deg] => 200 [clouds] => 92 [rain] => 0.38 ) [2] => Array ( [dt] => 1479549600 [temp] => Array ( [day] => 8.48 [min] => 7.66 [max] => 9.57 [night] => 7.66 [eve] => 8.56 [morn] => 7.71 ) [pressure] => 1011.83 [humidity] => 96 [weather] => Array ( [0] => Array ( [id] => 501 [main] => Rain [description] => moderate rain [icon] => 10d ) ) [speed] => 4.48 [deg] => 196 [clouds] => 92 [rain] => 6.17 ) [3] => Array ( [dt] => 1479636000 [temp] => Array ( [day] => 8.1 [min] => 6.92 [max] => 8.85 [night] => 8.85 [eve] => 7.77 [morn] => 7.52 ) [pressure] => 1014.42 [humidity] => 96 [weather] => Array ( [0] => Array ( [id] => 500 [main] => Rain [description] => light rain [icon] => 10d ) ) [speed] => 5.94 [deg] => 195 [clouds] => 36 ) [4] => Array ( [dt] => 1479722400 [temp] => Array ( [day] => 11.33 [min] => 8.15 [max] => 11.33 [night] => 9.11 [eve] => 10.63 [morn] => 8.15 ) [pressure] => 1014.84 [humidity] => 0 [weather] => Array ( [0] => Array ( [id] => 500 [main] => Rain [description] => light rain [icon] => 10d ) ) [speed] => 7.2 [deg] => 160 [clouds] => 18 [rain] => 0.23 ) [5] => Array ( [dt] => 1479808800 [temp] => Array ( [day] => 11.78 [min] => 7.51 [max] => 11.78 [night] => 7.51 [eve] => 8.94 [morn] => 8.15 ) [pressure] => 1021.38 [humidity] => 0 [weather] => Array ( [0] => Array ( [id] => 800 [main] => Clear [description] => clear sky [icon] => 01d ) ) [speed] => 5.28 [deg] => 190 [clouds] => 17 ) [6] => Array ( [dt] => 1479895200 [temp] => Array ( [day] => 8.96 [min] => 4.09 [max] => 8.96 [night] => 4.09 [eve] => 7.66 [morn] => 6.34 ) [pressure] => 1024.09 [humidity] => 0 [weather] => Array ( [0] => Array ( [id] => 500 [main] => Rain [description] => light rain [icon] => 10d ) ) [speed] => 5.58 [deg] => 249 [clouds] => 78 [rain] => 1.15 ) ) ) Max temperature for day 0 will be 7.39


Chcę wyświetlić część wartości na mojej aplikacji SmartHome (PHP, HTML) jak to ugryźć.

Pozdrawiam
SmokAnalog
Możesz wkleić ten kod dokładnie tak, jak wyrzuca go print_r, czyli z nowymi liniami i wcięciami? (zajrzyj w źródło strony lub ustaw Content-Type: text/plain)
matiit
Poza tym co to znaczy obrobić?

Co potrzebujesz robić z tymi danymi?
designez
Ta lista zawiera dane które być może w przyszłości będę chciał wyświetlić ale obecnie tylko kilka wartości Chcę wyświetlić to w możliwie najprostszej postaci.
echo "Miasto"; itd
np miasto, wilgotność, pogoda, temperatura. Kod php ok ale jak właśnie najlepiej pobrać te dane i wyświetlić je bez bawienia się w pętle.
SmokAnalog
Sam sobie zrobiłem z wcięciami, bo zignorowałeś moją prośbę.

Powiedz jakie dane chcesz dokładnie pobrać, bo ciut ogólne to Twoje pytanie.
Tomplus
Aby wyświetlić wartość tablicy to nie powinieneś mieć z tym problemu po prostu:

np. nazwę miasta:

  1. echo $array['city']['name'];


czyli każde Array() to nowy poziom tablicy.
gdy wpiszesz
  1. echo '<pre>'.print_r($array['city'], true).'</pre>';

To wyświetlą ci się wszystkie wartości dotyczące miasta.
designez
Dzięki za odpowiedź czyli aby dostać się do
  1. Array ( [city] => Array ( [id] => 3089392 [name] => Olsztyn [coord] => Array ( [lon] => 19.659321 [lat] => 54.0616 ) [country] => PL [population] => 0 ) [cod] => 200 [message] => 0.0124 [cnt] => 7 [list] => Array ( [0] => Array ( [dt] => 1479463200 [temp] => Array ( [day] => 9.09 [min]


  1. echo $data['city']['lon']['0']['dt']['day'];


Nie działa. Jak dostać się do takiego elementu?
nospor
Zjadles coord... naprawde tego nie widzisz?
designez
  1. echo $data['city']['name'];
  2. echo "<br>";
  3. echo $data['city']['lon']['0']['dt']['day'];
  4. echo "<br>";
  5. echo $data['city']['temp']['day']['min'];
  6. echo "<br>";
  7. echo $data['city']['coord']['list']['0']['dt']['temp']['day'];
  8. echo "<br>";
  9. echo "<br>";
  10. echo $data['city']['coord'];


Kilka kombinacji nic z tego nie działa poza pierwszą linią.
Wybaczcie ale nie rozumiem Array staram się opanować zbyt dużo języków programowania na raz ale zawsze tablice nie były moją mocną stroną.
Tomplus
@designez
jak czytasz tablice które drukujesz przez print_r lub var_dump to jeżeli nie używasz znaczników do preformatowania kodu <pre>, to czytaj kod przez ŹRÓDŁO STRONY.

Prawym guzikiem myszy -> Źródło lub CTRL + U.
Lub korzystaj z takich narzędzi jak: http://phpbeautifier.com/beautify.php gdzie po wklejeniu kodu masz ładne drzewo z tablicy.

Jest mniejsza szansa na popełnienie błędu przy szukaniu danej wartości tablicy, która jest głęboko zakorzeniona.

Tablice nie są twoją mocną stroną? A obiekty?
designez
Dzięki stronką którą mi podałeś znacznie pomogła bo informacje jakie zassałem z API to sporo kodu a Notepad c++ fajnie podświetla gdzie kończy się nawias (tablica)
Czekałem na wskazówki nie chciałem budować klasy bo jest możliwe obsłużenie tego poprzez JSONA? Fajnie można to zrobić poprzez regex i obudować w klasę albo prostą fuunkcję do tego celu używam zawsze http://regexr.com/
  1. $pressure=$clima->main->pressure;


Sprawa się bardziej komplikuje kiedy chcę wyświetlić wiele informacji np. pogoda na jutro + dziś i zakresy temperatur.

Jeszcze raz dzięki za pomoc
Życzę miłego weekendu
SmokAnalog
Fajnie, że dałeś Tomplusowi "pomógł" za to, że powtórzył to, co ja wcześniej napisałem <brawo>
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.