Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Pobieranie ostatniego rekordu z pliku json
Forum PHP.pl > Forum > Przedszkole
brzanek
Witam w jaki sposób mogę pobrać ostatni rekord z pliku json.
Tak wygląda plik.
  1. "windMax": [{
  2. "date": "2018-10-01T16:30:00Z",
  3. "value": 5.40
  4. }, {
  5. "date": "2018-10-01T16:40:00Z",
  6. "value": 5.50
  7. }, {
  8. "date": "2018-10-01T16:50:00Z",
  9. "value": 6.60
  10. }, {
  11. "date": "2018-10-01T17:00:00Z",
  12. "value": 6.30
  13. }, {
  14. "date": "2018-10-01T17:10:00Z",
  15. "value": 5.70
  16. }, {
  17. "date": "2018-10-01T17:20:00Z",
  18. "value": 5.0
  19. }, {
  20. "date": "2018-10-01T17:30:00Z",
  21. "value": 4.40
  22. }
  23. ]

Dane zmieniają się a więc po dacie to nie wypali ostatni rekord nie zawsze będzie 7 jak w tym przypadku może być 8 lub 10 albo inny.
Czy jest na to jakaś rada?
werdan
  1. var last = jsonData.windMax[jsonData.windMax.length-1];


Czy o to chodziło?
brzanek
Albo coś żle robię albo to niedziała.
  1. $urll = file_get_contents('http://plik.json');
  2. $urll = json_decode($urll, true);
  3. $ostatni_wiatr = $urll['windMax.length-1'];
  4. echo "<div>Najsilniejszy ".$ostatni_wiatr." km/h</div>";

werdan
  1. $ostatni_wiatr = end($urll['windMax']);
brzanek
Nadal nic nie podaje jedynie Array
werdan
Zapodaj tego plik.json, bo tak to jedynie się można domyślać struktury pliku.
brzanek
To bez znaczenia jaka jest struktura pliku json
W taki sposób pobieram ostatni rekord ale nie zawsze ostatni rekord to 998. Czasem się zdarza że ostatni rekord będzie 1000 i już takie zapytanie nie pobierze tego.
  1. $urll = file_get_contents('http://plik.json');
  2. $urll = json_decode($urll, true);
  3. $minuty00 = '998';
  4. for($i=997; $i < $minuty00; $i++){
  5. $wiatr00 = $urll['windMax'][$i]['value'];
  6. }
  7. echo "<div>".$wiatr00."km/h</div>";

Z pewnością jest inny sposób na pobranie zawsze ostatniego i np. przedostatniego rekordu.

Może coś takiego
  1. <p id="demo"></p>
  2. var fruits = ["Banana", "Orange", "Apple", "Mango"];
  3. document.getElementById("demo").innerHTML = fruits.pop();

Tylko jak to przerobić pod json i php.
viking
  1. var_dump(end($urll['windMax']));
brzanek
Prawie jest ok tylko chodzi mi konkretnie o wartość w polu value
"value": 4.40
Jak to wyświetlić w php za pomocą zmiennej?
  1. $ostatni_wiatr = (end($urll['windMax']['value']));
  2. echo "<div>Najsilniejszy ".$ostatni_wiatr."</div>";
nospor
Dobrze od czasu do czasu zobaczyc co robi kod podany przez osobe starajaca sie pomoc a nie na slepo walic jak popadnie :/

$ostatni_rekord = end($urll['windMax']);
$ostatni_wiatr = $ostatni_rekord['value'];
brzanek
Super o to chodziło.
A jeszcze jedno jak pobrać teraz przedostatni?
werdan
  1. $ostatni_rekord = end($urll['windMax']);
  2. $ostatni_wiatr = $ostatni_rekord['value'];
  3.  
  4. $przedostatni_rekord = prev($urll['windMax']);
  5. //lub
  6. $przedostatni_rekord = $urll['windMax'][count($urll['windMax'] - 2)];
  7. $przedostatni_wiatr = $przedostatni_rekord['value'];
  8.  
brzanek
Wyskakuje błąd
Fatal error: Uncaught Error: Unsupported operand types in /home/brzanek/public_html/2018/pogo/dane/index.php:67 Stack trace: #0 {main} thrown in /home/brzanek/public_html/2018/pogo/dane/index.php on line 67
To jest ta linia
  1. $przedostatni_rekord = $urll['windMax'][count($urll['windMax'] - 2)];
werdan
Zrobiłem błąd.

Poprawny przykład:
  1. $przedostatni_rekord = $urll['windMax'][count($urll['windMax']) - 2];

brzanek
Super wielkie dzięki za pomoc plusik lecie do ciebie.
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.