Alex Welander
Alex Welander

Reputation: 89

Get max/min value from json file with PHP

Im am trying to get the min and max temp value from a json src. I'm not getting the desired result that I am looking for. This is what i have so far.

Any help is greatly appreciated

<?php  

$url = 'https://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=b6907d289e10d714a6e88b30761fae22'; 
$data = file_get_contents($url); 
$forecasts = json_decode($data); 
$length = count($forecasts->list);

    for ($i = 0; $i < $length; $i++) {
        $val = round($forecasts->list[$i]->main->temp, 0);
    }       

    $min = min($val);
    $max = max($val);

    echo "max: ". $max ." - min: ". $max;

?>

Upvotes: 1

Views: 883

Answers (2)

Fran&#231;ois L
Fran&#231;ois L

Reputation: 99

Ok so I'm assuming that "temp" is the attribute where you want to get min/max:

<?php

function max($list){
    $highest = $list[0]->main->temp;
    foreach($list as $l){
        $highest = $l->main->temp > $highest ? $l->main->temp : $highest;
    }
    return $highest;
}

function min($list){
    $lowest = $list[0]->main->temp;
    foreach($list as $l){
        $lowest = $l->main->temp < $lowest ? $l->main->temp : $highest;
    }
    return $lowest;
}

$url = 'https://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=b6907d289e10d714a6e88b30761fae22'; 
$data = file_get_contents($url); 
$forecasts = json_decode($data); 
$length = count($forecasts->list);    

$min = min($forecasts->list);
$max = max($forecasts->list);

echo "max: ". $max ." - min: ". $max;

?>

should be copy-pastable for your case...

Upvotes: 0

Nick
Nick

Reputation: 147176

You are overwriting the value of $val in each pass through your for loop. What you actually want to do is push each value into an array that you can then take the min and max of:

$val = array();
for ($i = 0; $i < $length; $i++) {
    $val[] = round($forecasts->list[$i]->main->temp, 0);
}       

$min = min($val);
$max = max($val);

Upvotes: 5

Related Questions