0

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

例子:

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

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

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

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

对不起,我没有任何工作代码,我还在学习 PHP。

任何帮助将不胜感激:) 谢谢。

4

2 回答 2

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

你可以看到这打印

Array
(
    [232] => 54
    [123] => 32
    [122] => 12
    [343] => 12
)
于 2012-09-06T21:01:20.490 回答
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");
于 2012-09-06T21:05:53.863 回答