如何使用php找到数组中的一些最小值?

时间:2016-09-17 21:34:54

标签: php arrays min

我有一个数组As:

(?<name>.*?)\s?\((?<date>\d+)\)$

如何在阵列中找到4个较小的数字?对于这个例子,我的结果是:0,1,3,3

2 个答案:

答案 0 :(得分:1)

<?php

$array = array(
0 => 1,
1 => 3,
2 => 7,
3 => 0,
4 => 6,
5 => 3,
);

sort($array, SORT_NUMERIC);
$array = array_slice($array,0,4);

?>

答案 1 :(得分:0)

如果您拥有庞大的数组且需要您的代码在 O(n)而不是 O(n.log(n))中运行,您可以使用这个功能:

function min4($array) {
    $result = [1e300,1e300];
    foreach ($array as $val) {
        if ($val <= $result[1]) {
            array_splice($result, $val > $result[0] ? 1 : 0, 0, [$val]);
        } elseif ($val <= $result[3]) {
            array_splice($result, $val > $result[2] ? 3 : 2, 0, [$val]);
        }
    }
    return array_slice($result, 0, 4);
}

请致电:

print_r (min4($array));

当然,对于中等大小的数组,使用sort会提供更好的性能。但是对于具有300多个元素的数组,上述函数在大多数情况下都会表现得更好。