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 was a more elegant solution.
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 was a more elegant solution.
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.
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
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"];