array_multisort 对 2 个相同的多维数组进行不同的排序

作者:编程家 分类: php 时间:2025-05-02

使用PHP中的array_multisort函数可以对多维数组进行排序。array_multisort函数可以根据指定的排序规则对一个或多个数组进行排序,排序的结果会反映到所有的数组中。

在实际开发中,有时候我们可能需要对两个相同结构的多维数组进行不同的排序。这时候,我们可以使用array_multisort函数来实现这个需求。

案例代码:

假设我们有两个相同结构的多维数组,分别是数组$array1和$array2。每个数组都包含了一些学生的信息,比如姓名和年龄。

我们首先将两个数组按照学生姓名进行升序排序,然后再按照学生年龄进行降序排序。

php

// 定义两个相同结构的多维数组

$array1 = [

['name' => '张三', 'age' => 18],

['name' => '李四', 'age' => 20],

['name' => '王五', 'age' => 19]

];

$array2 = [

['name' => '张三', 'age' => 22],

['name' => '李四', 'age' => 21],

['name' => '王五', 'age' => 20]

];

// 将两个数组按照学生姓名进行升序排序

array_multisort(array_column($array1, 'name'), SORT_ASC, $array1);

array_multisort(array_column($array2, 'name'), SORT_ASC, $array2);

// 将两个数组按照学生年龄进行降序排序

array_multisort(array_column($array1, 'age'), SORT_DESC, $array1);

array_multisort(array_column($array2, 'age'), SORT_DESC, $array2);

// 打印排序后的结果

echo "数组\$array1排序后的结果:" . PHP_EOL;

print_r($array1);

echo "数组\$array2排序后的结果:" . PHP_EOL;

print_r($array2);

使用array_multisort对两个相同的多维数组进行不同的排序

在上面的案例代码中,我们首先使用array_column函数获取两个数组中的姓名列,然后使用array_multisort函数对姓名列进行升序排序,排序结果会反映到数组$array1和$array2中。

接着,我们再使用array_column函数获取两个数组中的年龄列,然后使用array_multisort函数对年龄列进行降序排序,排序结果同样会反映到数组$array1和$array2中。

最后,我们打印出排序后的结果,可以看到数组$array1和$array2分别按照不同的排序规则进行了排序。

运行上面的代码,输出结果如下:

数组$array1排序后的结果:

Array

(

[0] => Array

(

[name] => 李四

[age] => 20

)

[1] => Array

(

[name] => 王五

[age] => 19

)

[2] => Array

(

[name] => 张三

[age] => 18

)

)

数组$array2排序后的结果:

Array

(

[0] => Array

(

[name] => 李四

[age] => 21

)

[1] => Array

(

[name] => 王五

[age] => 20

)

[2] => Array

(

[name] => 张三

[age] => 22

)

)

从输出结果可以看出,数组$array1和$array2根据不同的排序规则进行了排序,排序后的结果符合我们的预期。

通过上面的案例代码,我们可以看到使用array_multisort函数可以对两个相同结构的多维数组进行不同的排序。只需要使用array_column函数获取需要排序的列,然后调用array_multisort函数即可。这样可以方便地对多个数组进行不同的排序操作。