按优先级数组对平面关联数组进行排序[重复]

问题描述 投票:0回答:2

所以我有一个像这样的数组:

Array
(
    [-1] => Array
        (
            [3] => 3
            [1] => 1
            [6] => 6
            [7] => 7
            [5] => 5
        )
)

它还包含一些其他不应修改的键。

我希望第二个数组中的数字排在第一位(按照第二个数组的顺序),然后是第二个数组中不存在的数字(如果有)。

因此,第二个数组将是:

Array
(
    [0] => 6
    [1] => 5
    [2] => 3
)

最终的数组应如下所示(请记住,该数组内还有一些键应保持原样):

Array
(
    [-1] => Array
        (
            [6] => 6
            [5] => 5
            [3] => 3
            [1] => 1
            [7] => 7
        )
)

有什么想法可以做到吗?

谢谢!

php arrays sorting custom-sort
2个回答
1
投票

这不是也不应该被称为排序,但也许这个代码片段可以帮助你做你想做的事:

         $a1 = Array ( [-1] => Array ( [3] => 3 [1] => 1 [6] => 6 [7] => 7 [5] => 5 ) );
            $a2 = Array ( [0] => 6 [1] => 5 [2] => 3 );
            $sorted = getSortedArray($a1[-1] , $array2);
                function getSortedArray($array1 , $array2){
                 $temp = Array();
                 $count = 0;
                 $totalKeys = sizeof($array2);
                 for($i=0;$i<sizeof($array2);$i++){


 $temp[i] = $array1[$array2[i]];      
unset($array1[$array2[i]]);
    }
                 while($count!=sizeof($array1))
                          $temp[$totalKeys++] = $array1[$count++];                      
        return $temp;   



        }

0
投票

我相信您正在寻找的函数称为 array_multisort()

array_multisort()可用于排序 一次多个数组,或者一个 由一个或多个组成的多维数组 尺寸。

© www.soinside.com 2019 - 2024. All rights reserved.