这是获取数组的结果,我如何才能从此数组中找到最小值和最大值。
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 )
$max = max(array_map('current', $array));
$min = min(array_map('current', $array));
尚不完全清楚线的连接方式,但是我想我们在这里谈论的是多维数组。在这种情况下,迭代很容易:
$max = null;
foreach ($outer as $inner) {
$max = max($max, $inner[0]); // Compare with previous max
}
// $max is now 565656
$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);
似乎您有一个数组数组,每个内部数组都有两个具有相同值的键,并且您需要整个值集的最小值和最大值。如果是这种情况,则可能需要使用flatten the array,因此您将获得仅包含值的单个数组,然后使用PHP min和max函数。他们可以将数组作为参数。
展平函数(从我给的链接复制):
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);
最简洁地说,调用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
请注意,您的结果是所需大小的两倍。您应该生成一个索引数组或关联数组,因为同时拥有这两个数组是不必要的冗余。