2012-11-21 144 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