Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][JavaScript][PHP] Najwyższe wartości z json do bazy danych
Forum PHP.pl > Forum > Przedszkole
brzanek
Witam mam problem jak mogę dodać do bazy najwyższą wartość z danych pliku json
Tak wygląda plik.
  1. {
  2. "windMax": [{
  3. "value": 15.60
  4. }, {
  5. "value": 16.0
  6. }, {
  7. "value": 17.20
  8. }, {
  9. "value": 15.60
  10. }, {
  11. "value": 15.80
  12. }, {
  13. "value": 14.20
  14. }, {
  15. "value": 14.40
  16. }, {
  17. "value": 13.40
  18. }
  19. ]
  20. }

Jak widać najwyższa wartość z tego przykładu do 17.20 jak teraz tą wartość zapisać do bazy danych. Dane w pliku json są zmienne.
KsaR
json_decode($json, true) - zmienia json na tablicę php
array_column($array, 'value') - wyciąga wszystkie wartości o kluczu 'value' i robi z tego 1 tablicę.
max() - szuka max wartość z tablicy.
brzanek
Coś wywala błedy.
Mam tak
  1. $urll = file_get_contents('http://plik.json');
  2. $urll = json_decode($urll, true);
  3.  
  4. $minuty10 = '1007';
  5. $minuty20 = '1008';
  6. $minuty30 = '1009';
  7. $minuty40 = '1010';
  8. $minuty50 = '1011';
  9. $minuty00 = '1012';
  10.  
  11. //tym kodem wyświetlam osobno wartości z ostatniej godziny
  12. for($i=1006; $i < $minuty10; $i++){
  13. $wiatr10 = $urll['windMaxVelocityRecords'][$i]['value']*3.6;
  14. }
  15. for($i=1007; $i < $minuty20; $i++){
  16. $wiatr20 = $urll['windMaxVelocityRecords'][$i]['value']*3.6;
  17. }
  18. for($i=1008; $i < $minuty30; $i++){
  19. $wiatr30 = $urll['windMaxVelocityRecords'][$i]['value']*3.6;
  20. }
  21. for($i=1009; $i < $minuty40; $i++){
  22. $wiatr40 = $urll['windMaxVelocityRecords'][$i]['value']*3.6;
  23. }
  24. for($i=1010; $i < $minuty50; $i++){
  25. $wiatr50 = $urll['windMaxVelocityRecords'][$i]['value']*3.6;
  26. }
  27. for($i=1011; $i < $minuty00; $i++){
  28. $wiatr00 = $urll['windMaxVelocityRecords'][$i]['value']*3.6;
  29. }

Teraz z tych ostatnich pobranych rekordów jak wyświetlić ten z najwyższą wartością.
werdan
Trochę dziwnie tę pętlę.

Moje rozwiązanie, może coś naświetli rolleyes.gif

  1.  
  2. $minutes = ['10' => 1007, '20' => 1008, '30' => 1009, '40' => 1010, '50' => 1011, '00' => 1012];
  3. $winds = [];
  4.  
  5. foreach($minutes as $minute){
  6. if(isset($urll['windMaxVelocityRecords'][$minute]['value'])){
  7. $winds[] = $urll['windMaxVelocityRecords'][$minute]['value'] * 3.6;
  8. }
  9. }
  10.  
  11. echo max($winds);
  12.  


brzanek
Super działa świetnie.
Dobra robota plus dla 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.