Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][JavaScript][PHP] Najwyższe wartości z json do bazy danych
brzanek
post 29.09.2018, 16:23:16
Post #1





Grupa: Zarejestrowani
Postów: 427
Pomógł: 0
Dołączył: 8.11.2012

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


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.
Go to the top of the page
+Quote Post
KsaR
post 29.09.2018, 16:37:14
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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.

Ten post edytował KsaR 29.09.2018, 16:43:19


--------------------
Go to the top of the page
+Quote Post
brzanek
post 29.09.2018, 16:46:08
Post #3





Grupa: Zarejestrowani
Postów: 427
Pomógł: 0
Dołączył: 8.11.2012

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


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ą.
Go to the top of the page
+Quote Post
werdan
post 30.09.2018, 07:11:45
Post #4





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

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


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.  


Go to the top of the page
+Quote Post
brzanek
post 30.09.2018, 09:07:47
Post #5





Grupa: Zarejestrowani
Postów: 427
Pomógł: 0
Dołączył: 8.11.2012

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


Super działa świetnie.
Dobra robota plus dla ciebie.
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 Wersja Lo-Fi Aktualny czas: 27.05.2024 - 05:41