从一个数组中获取3个最小值,PHP

3

我知道min()可以从数组中获取最小值,但是我需要从数组中获取三个最小值。

假设我的数组名为$myArray

我在数组上使用了asort($myArray),然后print_r($myArray)输出如下:

Array (
    [137] => 4.90416668118
    [135] => 7.1203544474
    [18] => 7.2476262434
    [81] => 8.37903400152
    [33] => 9.1074567001
    [4] => 9.90788482793
    [138] => 10.2493339987
    [5] => 11.6024401676
    [63]...and so on until
    [124] => 8727.73285117
    [153] => 8727.73285117
    [117] => 8727.73285117
)

如何获取前三个值或前X个值,如果需要...

我应该说明一下:是否有可能在不丢失键的情况下实现这一点?

2个回答

17

有没有不丢失键的方法?我很可能会将其标记为答案。array_slice非常有用,现在我可以得到我需要的东西... - Thierry Blais
是的,只需将最后一个参数设置为 true,以保留键。 - Brad
1
太好了!谢谢。一旦我能接受,我就会接受……它就在文档里,不是吗? - Thierry Blais

2

像Brad的答案一样,但使用ksort来保留关联数组中的键:

ksort( $arr );
print_r( array_slice( $arr, 0, 3, true ) );

asort() 保持键的关联,不是吗?我认为 ksort() 是按键排序的,这不是我们需要的。他想要按值排序。 - Brad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接