2011-07-14 123 views
2

請我如何以下陣列PHP:排序數組

Array 
(
    'ben' => 1.0, 
    'ken' => 2.0, 
    'sam' => 1.5 
) 

排序,

Array 
(
    'ken' => 2.0, 
    'sam' => 1.5, 
    'ben' => 1.0 
) 

感謝。

+0

爲什麼你使用'''附近的數字像''ben'=> 1.0','。 – jeni

+0

哦!我的錯。感謝我現在編輯。 – Kennedy

回答

3

嘗試。

<?php 
$my_array = array('ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5); 

arsort($my_array); 
print_r($my_array); 
?> 

arsort()函數按相反順序對值進行排序。值保留其原始鍵。

+0

別提了。我也通過這個學到了一些東西。 – jeni

0

UPDATE:沒有注意到,你希望它在翻領.. INT帽子的情況下使用rsort

sort功能應該工作:

sort($theArray, SORT_NUMERIC);

+0

這種排序從低到高。海報要高到低。因此rsort(); –

+0

是的,剛纔看到了......我需要多加註意:-)給你倆+1 – prodigitalson

1
$arr = Array(
'ben' => 1.0, 
'ken' => 2.0, 
'sam' => 1.5 
)  
$sorted = asort($arr); 
$reversed = rsort($sorted); 
+0

謝謝。但數組鍵不保留 – Kennedy

+0

這很奇怪。根據文件,asort維護密鑰。哦,我知道,rsort正在重新混合它。 hmmmm – serialworm

+0

是的,rsort是那裏的壞人。 asort()的作品,但我仍然不得不使用array_reverse()來獲得DESC訂單。不管怎麼說,還是要謝謝你。 – Kennedy

1

如果您使用常規的PHP數組排序功能,則會丟失數組密鑰。我想給你想要的最短路徑是這樣的:

$array = array("ben" => "1.0", "ken" => "2.0", "sam" => "1.5"); 
array_multisort($array, SORT_DESC); 
print_r($array); 

確保您所有的數組值是字符串或數字,否則結果將是不可預知的。

+0

太棒了!它也可以。 – Kennedy