php 写一个二维数组排序算法函数,能够具有通用性
封面图
•
2026-01-02
•
PHP
274
0
0
0
在 PHP 中,你可以编写一个通用的二维数组排序函数,允许根据任意字段进行排序,并支持升序(ASC)或降序(DESC)。 下面是一个通用的二维数组排序函数示例: ```php <?php /** * 通用二维数组排序函数 * * @param array $array 要排序的二维数组 * @param string $key 要排序的字段名 * @param string $sort 排序方式:SORT_ASC(升序)或 SORT_DESC(降序) * @return array 排序后的数组 */ function sortMultiDimensionalArray($array, $key, $sort = 'SORT_ASC') { // 检查参数是否有效 if (!is_array($array) || !isset($key)) { return $array; } // 定义排序比较函数 $compareFunction = function ($a, $b) use ($key, $sort) { $valA = $a[$key]; $valB = $b[$key]; if ($valA == $valB) { return 0; } if ($sort === 'SORT_ASC') { return ($valA < $valB) ? -1 : 1; } else { return ($valA > $valB) ? -1 : 1; } }; // 使用 usort 进行排序 usort($array, $compareFunction); return $array; } // 示例用法: $data = [ ['name' => 'Alice', 'age' => 30], ['name' => 'Bob', 'age' => 25], ['name' => 'Charlie', 'age' => 35] ]; // 按 age 升序排序 $sortedByAgeAsc = sortMultiDimensionalArray($data, 'age', 'SORT_ASC'); print_r($sortedByAgeAsc); // 按 age 降序排序 $sortedByAgeDesc = sortMultiDimensionalArray($data, 'age', 'SORT_DESC'); print_r($sortedByAgeDesc); // 按 name 升序排序 $sortedByNameAsc = sortMultiDimensionalArray($data, 'name', 'SORT_ASC'); print_r($sortedByNameAsc); ``` ### ✅ 功能说明: - `sortMultiDimensionalArray` 函数接受一个二维数组、一个字段名和一个排序方式。 - 使用 `usort()` 和匿名函数实现自定义排序逻辑。 - 支持 `SORT_ASC`(升序)和 `SORT_DESC`(降序)两种方式。 ### ⚠️ 注意事项: - 确保所有子数组都包含要排序的字段,否则会引发警告或错误。 - 如果需要按多个字段排序,可以扩展该函数,使用多级比较。 如果你希望支持**多字段排序**(比如先按 `age`,再按 `name`),我也可以帮你扩展这个函数。欢迎继续提问!
上一篇:
linux解压 tar命令
下一篇:
curl 命令详解,Linux中访问url地址
标题录入,一次不能超过6条
留言
评论