PHP基于数组值排序关联数组

时间:2012-09-06 20:56:04

标签: php multidimensional-array sorting

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

示例:

如果我有一组值, AssocArray ='122'=>'12','123'=>'32','232'=>'54','343'=> '12'

我需要针对另一个值数组进行检查, orderArray ='232','123'

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

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

抱歉,我没有任何正常工作的代码,我还在学习PHP。

任何帮助都会非常感激:)谢谢。

2 个答案:

答案 0 :(得分: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
)

答案 1 :(得分: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");
相关问题