以使用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);
?>
代码解释:
- 函数定义:
sort2DArrayByColumn(&$array, $columnKey, $sortOrder = SORT_ASC)
:&$array
:传引用传递二维数组,排序后原数组会被修改。$columnKey
:指定要排序的列名。$sortOrder
:排序顺序,默认为升序(SORT_ASC
),可选降序(SORT_DESC
)。
- 提取列值:
array_column($array, $columnKey)
:提取出二维数组中指定列的所有值。
- 排序:
array_multisort($columnValues, $sortOrder, $array)
:根据提取出的列值对二维数组进行排序。
- 示例用法:
- 创建一个二维数组
$data
。 - 打印排序前的数组。
- 按
'age'
列升序排序并打印结果。 - 按
'salary'
列降序排序并打印结果。
- 创建一个二维数组
运行该代码后,你会看到数组按照指定的列和顺序进行了排序。