PHP二维数组排序算法函数

以使用PHP内置的array_multisort()函数来对二维数组进行排序。array_multisort()函数可以对多个数组或多维数组的一个或多个列进行排序。下面是一个示例函数,该函数可以对二维数组按指定列进行排序:

php 复制代码
<?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'列降序排序并打印结果。

运行该代码后,你会看到数组按照指定的列和顺序进行了排序。

相关推荐
清流君12 分钟前
【运动规划】移动机器人运动规划与轨迹优化全解析 | 经典算法总结
人工智能·笔记·算法·机器人·自动驾驶·运动规划
wang_changyue12 分钟前
CSP-X2024解题报告(T3)
数据结构·算法·leetcode
因特麦克斯12 分钟前
每日一题&移动语义
算法
vir0217 分钟前
木材加工(二分查找)
数据结构·c++·算法
Tisfy4 小时前
LeetCode 3240.最少翻转次数使二进制矩阵回文 II:分类讨论
算法·leetcode·矩阵·题解·回文·分类讨论
夜色呦4 小时前
Spring Boot实验室管理系统:高效科研管理解决方案
数据库·spring boot·php
橘子遇见BUG5 小时前
算法日记 31 day 动态规划(01背包)
算法·动态规划
东方巴黎~Sunsiny5 小时前
java-图算法
java·开发语言·算法
Tisfy6 小时前
LeetCode 3244.新增道路查询后的最短距离 II:贪心(跃迁合并)-9行py(O(n))
算法·leetcode·题解·贪心·思维