2014-02-18 65 views
2

我有一個foreach循環這樣PHP下降從foreach循環存儲值的數組

$ids = array(); 
foreach($idsvalues as $idv){ 
    $ids[$idv->id][] = $idv->value; 
} 

,我得到這樣

Array ([21] => 10 [13] => 16 [12] => 20 [7] => 28) 

現在我該怎樣降這個數組的數組()值只從最低到最高而不影響數組鍵或ID? 顯示這樣

Array ([21] => 28 [13] => 20 [12] => 16 [7] => 10); 

陣列可含有高達100個這樣的ID和值,以便基本上只是遞減值是多少?

回答

5

由於要保留的鑰匙,通過使用array_keys現在rsort您的陣列(即降序)將它們轉移到一個單獨的陣列中,使利用array_combine到抓起鑰匙鏈接和降序排序值。

<?php 
$arr=Array (21 => 10, 13 => 16, 12 => 20, 7 => 28); 
$k_arr=array_keys($arr); 
rsort($arr); 
$new_arr=array_combine($k_arr,$arr); 
print_r($new_arr); 

OUTPUT :

Array 
(
    [21] => 28 
    [13] => 20 
    [12] => 16 
    [7] => 10 
) 

Demo

+1

陣列([21] => 28 [13] => 20 [12] => 16 [7] => 10),Shokrya @Shankar你的解決方案是正確的。 – Genus