从数组,php查找最小值和最大值

问题描述 投票:0回答:5

这是获取数组的结果,我如何才能从此数组中找到最小值和最大值。

Array ( [0] => 0 [pr] => 0 ) 

Array ( [0] => 200 [pr] => 200 ) 

Array ( [0] => 250.1 [pr] => 250.1 ) 

Array ( [0] => 500 [pr] => 500 ) 

Array ( [0] => 800 [pr] => 800 )

Array ( [0] => 5656 [pr] => 5656 ) 

Array ( [0] => 34343 [pr] => 34343 )

Array ( [0] => 565656 [pr] => 565656 )
php arrays
5个回答
2
投票
$max = max(array_map('current', $array));
$min = min(array_map('current', $array));

1
投票

尚不完全清楚线的连接方式,但是我想我们在这里谈论的是多维数组。在这种情况下,迭代很容易:

$max = null;
foreach ($outer as $inner) {
    $max = max($max, $inner[0]); // Compare with previous max
}

// $max is now 565656

0
投票
 $min = $max = 0;
 foreach ($arrays as $arr)
 {
      if($arr[0] < $min) { $min = $arr[0]; }
      if($arr[0] > $max) { $max = $arr[0]; }
 }

 var_dump($min);
 var_dump($max);

0
投票

似乎您有一个数组数组,每个内部数组都有两个具有相同值的键,并且您需要整个值集的最小值和最大值。如果是这种情况,则可能需要使用flatten the array,因此您将获得仅包含值的单个数组,然后使用PHP minmax函数。他们可以将数组作为参数。

展平函数(从我给的链接复制):

function flatten(array $array) {
    $return = array();
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
    return $return;
}

您将如何使用它:

// assuming $the_array is your array of arrays:

$flat_array = flatten($the_array);
$min = min($flat_array);
$max = max($flat_array);

0
投票

最简洁地说,调用array_column()隔离所需列中的值,然后在平面生成的数组上调用max()以获取最大值。

代码:(Demo

$array = [
    [0, 'pr' => 0], 
    [200, 'pr' => 200], 
    [250.1, 'pr' => 250.1], 
    [500, 'pr' => 500],
    [800, 'pr' => 800],
    [5656, 'pr' => 5656],
    [34343, 'pr' => 34343],
    [565656, 'pr' => 565656],
];
var_export(max(array_column($array, 0)));

输出:

565656

请注意,您的结果是所需大小的两倍。您应该生成一个索引数组或关联数组,因为同时拥有这两个数组是不必要的冗余。

© www.soinside.com 2019 - 2024. All rights reserved.