PHP数组多维排序实战:从简单到复杂场景

WBOY
发布: 2024-04-29 21:12:02
原创
753 人浏览过

多维数组排序可分为单列排序和嵌套排序。单列排序可使用 array_multisort() 函数按列排序;嵌套排序需要递归函数遍历数组并排序。实战案例包括按产品名称排序和按销售量和价格复合排序。

PHP数组多维排序实战:从简单到复杂场景

PHP 数组多维排序实战:从简单到复杂场景

引言

在 PHP 中,对多维数组进行排序通常是一项复杂的任务。本教程将引导你逐步了解如何根据不同的场景进行多维数组排序,从简单的单列排序到复杂的嵌套排序。

单列排序

最简单的多维数组排序是根据单列进行排序。你可以使用array_multisort()函数:

$arr = [ ['id' => 1, 'name' => 'John Doe'], ['id' => 3, 'name' => 'Jane Smith'], ['id' => 2, 'name' => 'Bob Johnson'], ]; array_multisort(array_column($arr, 'id'), SORT_ASC, $arr); print_r($arr); // 输出: // Array // ( // [0] => Array // ( // [id] => 1 // [name] => John Doe // ) // [1] => Array // ( // [id] => 2 // [name] => Bob Johnson // ) // [2] => Array // ( // [id] => 3 // [name] => Jane Smith // ) // )
登录后复制

嵌套数组排序

对于嵌套数组,你需要使用递归函数来遍历数组并对其进行排序:

function sortNestedArray($arr, $col, $order) { if (!is_array($arr)) { return $arr; } uasort($arr, function($a, $b) use ($col, $order) { if ($a[$col] == $b[$col]) { return 0; } return ($a[$col] < $b[$col]) ? -1 : 1; }); foreach ($arr as &$item) { if (is_array($item)) { $item = sortNestedArray($item, $col, $order); } } return $arr; }
登录后复制

实战案例

案例 1:按产品名称对嵌套数组进行排序

$products = [ ['id' => 1, 'name' => 'Apple', 'price' => 10], ['id' => 2, 'name' => 'Orange', 'price' => 15], ['id' => 3, 'name' => 'Banana', 'price' => 5], ]; $sortedProducts = sortNestedArray($products, 'name', SORT_ASC); // ... 处理排序后的数组 ...
登录后复制

案例 2:按销售量和价格对嵌套数组进行复合排序

$salesData = [ ['product' => 'Apple', 'count' => 10, 'price' => 10], ['product' => 'Orange', 'count' => 15, 'price' => 15], ['product' => 'Banana', 'count' => 5, 'price' => 5], ]; usort($salesData, function($a, $b) { if ($a['count'] == $b['count']) { return ($a['price'] < $b['price']) ? -1 : 1; } return ($a['count'] < $b['count']) ? 1 : -1; }); // ... 处理排序后的数据 ...
登录后复制

以上是PHP数组多维排序实战:从简单到复杂场景的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!