根据PHP中的另一个数组值对数组进行排序

时间:2015-06-11 16:40:42

标签: php arrays sorting

我的数组值如下: -

$Array1 = array("myfirst_value", "mysecond_value", "mythird_value"}

现在我的另一个数组,列表随机出现如下: -

$Array2 = array
(
    [4] => myfirst_value
    [8] => myforth_value
    [21] => mysecond_value
    [7] => myfifth_value
    [17] => mysixth_value
    [20] => mythird_value
    [16] => myseventh_value
)

我希望实现的是$ Array2根据$ Array1中的值的顺序进行排序。

所以,我希望$ Array2得到排序并成为: -

$Array2 = array
(
        [4] => myfirst_value
        [21] => mysecond_value
        [20] => mythird_value


        [7] => myfifth_value
        [8] => myforth_value
        [16] => myseventh_value
        [17] => mysixth_value

)

注意,Array1的值先排序,其余的输出没有任何顺序。

由于

3 个答案:

答案 0 :(得分:1)

如果我理解正确

Array
(
    [4] => myfirst_value
    [21] => mysecond_value
    [20] => mythird_value
    [8] => myforth_value
    [7] => myfifth_value
    [17] => mysixth_value
    [16] => myseventh_value
)

结果

FOSRestBundle

答案 1 :(得分:1)

您也可以将uasort()功能用作

uasort($Array2, function($a,$b) use (&$Array1){
    foreach($Array1 as $key => $value){
        if($a == $value){
            return 0;
            break;
        }
        if($b == $value){
            return 1;
            break;
        }
    }
    if($a == $b){ return 0;}  return ($a < $b) ? -1 : 1;
});

Fiddle

答案 2 :(得分:0)

除了泼水的完美答案外,这也有效: -

 $Sorted_Array = array_merge(
        array_intersect($Array1, $Array2), 
        array_diff($Array2, $Array1)
 );