Наибольшее значение ассоциативного массива

Есть ли простой способ получить наивысшее числовое значение ассоциативного массива?

$array = array( 0 => array( 'key1' => '123', 'key2' => 'values we', 'key3' => 'do not', 'key4' => 'care about' ), 1 => array( 'key1' => '124', 'key2' => 'values we', 'key3' => 'do not', 'key4' => 'care about' ), 2 => array( 'key1' => '125', 'key2' => 'values we', 'key3' => 'do not', 'key4' => 'care about' ) ); AwesomeFunction($array, 'key1'); // returns 2 ($array key) 

Пожалуйста, будьте добры, потому что этот вопрос был написан с телефона. Благодарю.

Если вы знаете, что ваши данные всегда будут в этом формате, что-то вроде этого должно работать.

 function getMax( $array ) { $max = 0; foreach( $array as $k => $v ) { $max = max( array( $max, $v['key1'] ) ); } return $max; } 

PHP 5.5 представил array_column() что делает это намного проще:

 echo max(array_column($array, 'key1')); 

демонстрация

@ithcy – расширение к нему будет работать с любым размером массива

 function getMax($array) { if (is_array($array)) { $max = false; foreach($array as $val) { if (is_array($val)) $val = getMax($val); if (($max===false || $val>$max) && is_numeric($val)) $max = $val; } } else return is_numeric($array)?$array:false; return $max; } 

Я думаю (возвращает false, когда числовых значений не найдено)

Этот пример вдохновлен примером, но вы можете установить ключ для поиска. Кроме того, он возвращает как минимальные, так и максимальные значения.

 function getArrayLimits( $array, $key ) { $max = -PHP_INT_MAX; $min = PHP_INT_MAX; foreach( $array as $k => $v ) { $max = max( $max, $v[$key] ); $min = min( $min, $v[$key] ); } return Array('min'=>$min,'max'=>$max); }