Is there any easy way to get the hightest numeric value of an associative array?
$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(
开发者_JS百科'key1' => '125',
'key2' => 'values we',
'key3' => 'do not',
'key4' => 'care about'
)
);
AwesomeFunction($array, 'key1'); // returns 2 ($array key)
Please be kind since this question was written with a phone. Thanks.
PHP 5.5 introduced array_column()
which makes this much simpler:
echo max(array_column($array, 'key1'));
Demo
If you know your data will always be in that format, something like this should work.
function getMax( $array )
{
$max = 0;
foreach( $array as $k => $v )
{
$max = max( array( $max, $v['key1'] ) );
}
return $max;
}
@ithcy - extension to that will work with any size array
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;
}
I think (returns false when there are no numeric values are found)
This one is inspired by ithcy example, but you can set the key to look up. Also, it returns both the min and max values.
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);
}
精彩评论