PHP二维数组排序算法函数
以使用PHP内置的array_multisort()函数来对二维数组进行排序。array_multisort()函数可以对多个数组或多维数组的一个或多个列进行排序。下面是一个示例函数,该函数可以对二维数组按指定列进行排序:
<?php
function sort2DArrayByColumn(&$array, $columnKey, $sortOrder = SORT_ASC) {
// 提取出需要排序的列
$columnValues = array_column($array, $columnKey);
// 使用 array_multisort 对二维数组进行排序
array_multisort($columnValues, $sortOrder, $array);
}
// 示例用法
$data = [
['name' => 'John', 'age' => 30, 'salary' => 5000],
['name' => 'Jane', 'age' => 25, 'salary' => 6000],
['name' => 'Doe', 'age' => 35, 'salary' => 4000],
];
echo "排序前:\n";
print_r($data);
// 按 'age' 列升序排序
sort2DArrayByColumn($data, 'age');
echo "\n按 'age' 列升序排序后:\n";
print_r($data);
// 按 'salary' 列降序排序
sort2DArrayByColumn($data, 'salary', SORT_DESC);
echo "\n按 'salary' 列降序排序后:\n";
print_r($data);
?>
代码解释:
1. 函数定义:
-
sort2DArrayByColumn(
&$array,
$columnKey
,$sortOrder
= SORT_ASC):-
&$array
:传引用传递二维数组,排序后原数组会被修改。 -
$columnKey
:指定要排序的列名。 -
$sortOrder
:排序顺序,默认为升序(SORT_ASC),可选降序(SORT_DESC)。
-
2. 提取列值:
- array_column(
$array
,$columnKey
):提取出二维数组中指定列的所有值。
3. 排序:
- array_multisort(
$columnValues
,$sortOrder
,$array
):根据提取出的列值对二维数组进行排序。
4. 示例用法:
-
创建一个二维数组$data。
-
打印排序前的数组。
-
按’age’列升序排序并打印结果。
-
按’salary’列降序排序并打印结果。
运行该代码后,你会看到数组按照指定的列和顺序进行了排序。