find max() of specific multidimensional array value in php

后端 未结 3 742
醉梦人生
醉梦人生 2020-12-10 19:48

See array for example: here

Basically, I want to find the max() for array[][\'time\'] in that array. I can figure it out if I loop through it, but I was hoping there

相关标签:
3条回答
  • 2020-12-10 20:13

    Think array_reduce if you want to compute some single value iteratively over an array:

    $max = array_reduce($array, function($a, $b) { 
      return $a > $b['time'] ? $a : $b['time']; 
    } );
    

    Or you could make use of a utility function like:

    function array_col(array $a, $x)
    {
      return array_map(function($a) use ($x) { return $a[$x]; }, $a);
    }
    

    which would be used like:

    $max = max(array_col($array, 'time'));
    

    It's more general purpose and could be used for other similar things.

    0 讨论(0)
  • 2020-12-10 20:18

    You could always sort the array and take the first or last value respectively. You can make use of usort to sort your array by providing a custom comparison function to reflect your structure.

    Here's a simple example:

    $foo[1]["time"] = 2323443;
    $foo[2]["time"] = 343435;
    $foo[3]["time"] = 13455;
    $foo[4]["time"] = 9873634;
    $foo[5]["time"] = 82736;
    $foo[6]["time"] = 9283;
    
    function cmp($a, $b)
    {
        if ($a["time"] == $b["time"]) {
            return 0;
        }
        return ($a["time"] < $b["time"]) 
            ? -1 
            : 1;
    }
    
    usort($foo, "cmp");
    
    $max = $foo[count($foo)-1]["time"];
    
    0 讨论(0)
  • 2020-12-10 20:22

    Sort the array from highest to lowest in terms of []['time'] and get the first value:

    function sort_arr($item_1, $item_2)
    {
      return $item_2['time'] - $item_1['time'];
    }
    
    usort($arr, 'sort_arr');
    
    // $arr[0] is the item with the highest time
    
    0 讨论(0)
提交回复
热议问题