2012-09-06 134 views
0

我目前有一个值的关联数组,我需要根据另一个数组中的值进行排序。PHP基于数组值的排序关联数组

实施例:

如果我有值的, AssocArray = '122'=> '12', '123'=> '32', '232'=> '54',“343的阵列“=>” 12'

我需要检查它针对值的另一个数组, orderArray =‘232’,‘123’

如果它存在的值时,则推到AssocArray的顶部。所以最终的数组看起来像这样。

AssocArray = '232'=> '54', '123'=> '32', '122'=> '12', '343'=> '12'

抱歉,我没有任何工作代码,我仍然在学习PHP。

任何帮助将真正感谢:)谢谢。

+0

看看这里:HTTP ://stackoverflow.com/questions/777597/sorting-an-associative-array-in-php –

回答

2

循环访问您的$orderArray,并检查$AssocArray中是否存在带该密钥的元素。如果是,请将该元素添加到$result阵列中,并将其从原始$AssocArray中删除。然后,你只需要合并在$AssocArray与任何剩下的元素被推到了$results阵列的顶部:

$AssocArray = array('122'=>'12', '123'=>'32', '232'=>'54', '343'=>'12'); 
$orderArray = array('232', '123'); 

rsort($orderArray, SORT_STRING); // Make sure the order array is sorted from highest to lowest 

$result = array(); 
foreach($orderArray as $key) { 
    if(isset($AssocArray[ $key ])) { 
     $result[$key] = $AssocArray[ $key ]; 
     unset($AssocArray[ $key ]); 
    } 
} 

foreach($AssocArray as $k => $v) { 
    $result[$k] = $v; 
} 

print_r($result); // Print the resulting array 

你可以看到,this prints

Array 
(
    [232] => 54 
    [123] => 32 
    [122] => 12 
    [343] => 12 
) 
+0

完美!非常感谢。 – devfunkd

0
$orderArray = array("232", "123"); 

function customSort($key1, $key2){ 
    $key1Pos = array_search($key1, $orderArray); 
    $key2Pos = array_search($key2, $orderArray); 
    if($key1Pos !== NULL && $key2Pos != NULL){ 
     return $key1Pos - $key2Pos; 
    }else if($key1Pos === NULL){ 
     return 1; 
    }else{ 
     return -1; 
    } 
} 


uksort($array, "customSort");