如何按值对2个数组进行排序

时间:2015-12-08 16:15:24

标签: php arrays

我有这个数组:

"%{environment}"

现在我想得到:

Array ( 
[order] => Array ( [0] => 2 [1] => 1 )
[eventid] => Array ( [0] => id_1 [1] => id_2 )
 ) 

基本上我想按顺序值排序数组。

2 个答案:

答案 0 :(得分:4)

您需要使用usort功能才能执行此操作。 (见documentation

我会推荐另一种Array结构,如下所示:

Array ( 
[0] => Array ( [order] => 2, [eventid] => id_x )
[1] => Array ( [order] => 1, [eventid] => id_y )
)

然后你可以使用这样的函数对数组进行排序(PHP 5.3或更高版本):

function array_sort_by(&$array, $key, $descending = false) {
    $sortByKey =
        function ($a, $b) use ($key, $descending) {
            if ($a[$key] === $b[$key]) {
                return 0;
            }
            $return = $a[$key] < $b[$key] ? -1 : 1;
            return ($descending ? -1 * $return : $return);
        };

    usort($array, $sortByKey);
}

然后您将调用以下内容:

array_sort_by($yourArray, 'order');

答案 1 :(得分:0)

您可以使用asort。虽然它可以涵盖您的情况,但从长远来看,usort可能是更好的解决方案。

$arr = Array ( 
     "order" => Array ( 0 => 6, 1 => 1,2=>43),
     "eventid" => Array ( 0 => 5, 1 => 1,2=>54,3=>0)
 ); 

foreach ($arr as $key => &$value) {
 asort($value);
}
相关问题