2012-11-21 146 views
1

我想使用asort()对数组进行排序并限制要返回的元素数。如何对数组进行排序?

我举一个exeample:

$words = array (
["lorem"]=> 
int(2) 
["sssss"]=> 
int(2) 
["dolor"]=> 
int(4) 
["ipsum"]=> 
int(2) 
["title"]=> 
int(1)); 

与=限= 2我想有回报:

$words = array (
    ["dolor"]=> 
    int(4)  
    ["lorem"]=> 
    int(2)); 

换句话说,我要进行排序,并只返回第一次发生的依据是$limit

有什么想法吗?

回答

8

你可以使用array_slice

asort($words); 
$result = array_slice($words, 0, $limit); 
2

不能应用限制ASORT(),但是这是一个解决办法。

<?php 
    $words = array("Cat", "Dog", "Donkey"); 
    $sorted = asort($words); 
    $limit = 2; 
    $final = array(); 
    for ($i = 0; $i <= ($limit - 1); $i++) { 
     $final[] = $words[$i]; 
    } 
    var_dump($final); 
?> 

希望这会有所帮助。

+0

第二个是没有意义的。他想要两个最高的排序顺序元素,而不是排序顺序中的前两个元素。 – Gaminic

+0

是的,谢谢你,删除了不必要的解决方案。 array_slice是一种更好的解决方案。干杯。 –

+0

您的解决方案完全有效且易于理解。 – Gaminic