skip to Main Content

I want to find the time and temp in the row with maximum temp value in a 2d array.

Here is sample data for my weather array:

[
    ['time' => '00:00', 'temp' => '15.1'],
    ['time' => '00:00', 'temp' => '15.1'],
    ['time' => '00:01', 'temp' => '15.1'],
    ['time' => '00:02', 'temp' => '15.1'],
    ['time' => '00:02', 'temp' => '15.1'],
    ['time' => '00:02', 'temp' => '15.0'],
    ['time' => '00:03', 'temp' => '15.0'],
]

I’ve tried a few google searches and it finds the max temp, but I cannot work out how to get the time associated with that.

This is also using WordPress, so I am trying to reduce the WP_Queries I have setup currently.

2

Answers


  1. $weather = array(
        0 => array( 
            'time' =>'00:00', 
            'temp' => '15.1' 
        ),
        1 => array (
          'time' =>  '00:00',
          'temp' =>  '15.1' 
        ),
        2 => array (
          'time' =>  '00:01', 
          'temp' =>  '15.1' 
        ),
        3 =>  array (
          'time' =>  '00:02', 
          'temp' =>  '15.1' 
        ),
        4 => array (
          'time' =>  '00:02', 
          'temp' =>  '15.1' 
        ),
        5 =>  array (
          'time' =>  '00:02',
          'temp' =>  '15.0' 
        ),
        6 => array (
          'time' =>  '00:03', 
          'temp' =>  '15.0' 
        )
    );
    
    $highest_temp = -9999999; //use to set the highest value
    $highest_temp_array = null; //use to hold the array
    
    foreach( $weather as $key => $value )
    {
        if( $value['temp'] > $highest_temp){
           $highest_temp = $value['temp'];
           $highest_temp_array = $value;
        }
    }
    
    echo "highest temp is $highest_temp at time " . $highest_temp_array['time'];
    
    Login or Signup to reply.
  2. Declare a result array and while iterating, only update the result array if the result array is empty or if the new temp value is greater than the stored temp value.

    Code: (Demo)

    $result = [];
    foreach ($weather as $row) {
        if (!$result || $row['temp'] > $result['temp']) {
            $result = $row;
        }
    }
    
    var_export($result);
    

    The result will be the first occurring row with the max temperature.

    array (
      'time' => '00:00',
      'temp' => '15.1',
    )
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search