php 数组排序(其中的一个值进行排序)(array_multisort实现多维数组按多个值排序问题)
发布日期:2021-05-04 09:22:58 浏览次数:22 分类:精选文章

本文共 2043 字,大约阅读时间需要 6 分钟。

PHP 数组排序详解

PHP 提供了多种高效的数组排序函数,能够满足不同的排序需求。本文将详细介绍 PHP 数组排序的方法及实际应用案例。

方法一:使用 sort 函数

sort() 是 PHP 内置的排序函数,用于对数组单元从低到高进行排序。该函数会重新排列数组中的单元,并为其赋予新的键名。

例子

$arr = array("b", "a", "c");sort($arr);print_r($arr);

注意事项

  • sort() 函数会改变排序后的数组单元的键名,默认为 0,1,2,...。
  • sort() 函数返回 TRUE 表示排序成功,返回 FALSE 表示失败。

方法二:使用 array_multisort 函数

array_multisort() 可用于对多维数组进行排序,支持根据特定字段对数组元素进行排序。

1. 单字段排序

以下是基于单字段的排序示例:

$cmf_settings = array(    array("url" => "img/20191015/5da586020fa6b.jpg", "alt" => "lunbo2", "href" => "https://www.baidu.com/", "sort" => "7"),    array("url" => "img/20191018/5da9783499dec.jpg", "alt" => "X1300", "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/x1300-180.html", "sort" => "3"),    array("url" => "img/20191018/5da987c81f420.jpg", "alt" => "S300", "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/s300-170.html", "sort" => "4"));$cmf_arr = array_column($cmf_settings, 'sort');array_multisort($cmf_arr, SORT_ASC, $cmf_settings);

2. 多字段排序

以下是基于多个字段的排序示例:

$arr = array(    '0' => array('id' => 3, 'age' => 27),    '1' => array('id' => 5, 'age' => 50),    '2' => array('id' => 4, 'age' => 44),    '3' => array('id' => 3, 'age' => 78));array_multisort($id = array(), SORT_ASC, $age = array(), SORT_DESC, $arr);

3. 动态字段排序

为了支持动态字段数量,以下是使用 func_get_args() 的实现方法:

function sortArrByManyField() {    $args = func_get_args();    if (empty($args)) {        return null;    }    $arr = array_shift($args);    if (!is_array($arr)) {        throw new Exception("第一个参数不为数组");    }    foreach ($args as $key => $field) {        if (is_string($field)) {            $temp = array();            foreach ($arr as $index => $val) {                $temp[$index] = $val[$field];            }            $args[$key] = $temp;        }    }    $args[] = &$arr;    call_user_func_array('array_multisort', $args);    return array_pop($args);}$arr = sortArrByManyField($array1, 'id', SORT_ASC, 'name', SORT_ASC, 'age', SORT_DESC);

总结

PHP 提供了丰富的数组排序功能,能够满足不同场景的需求。无论是简单的单字段排序,还是复杂的多字段排序,都可以通过合理搭配 PHP 内置函数来实现。通过以上方法,开发者可以轻松实现对多维数组的排序需求。

上一篇:TP5 控制器中foreach循环语句
下一篇:php ajax 仿百度查询下拉内容

发表评论

最新留言

不错!
[***.144.177.141]2025年04月04日 14时49分42秒