gpt4 book ai didi

php二维数组排序方法(array_multisort usort)

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章php二维数组排序方法(array_multisort usort)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

例如像下面的数组:

  。

复制代码 代码如下:

$users = array(
    array('name' => 'tom', 'age' => 20)
    , array('name' => 'anny', 'age' => 18)
    , array('name' => 'jack', 'age' => 22)
);

  。

希望能按照age从小到大进行排序。笔者整理了两个方法出来,分享给大家.

1、使用array_multisort 。

使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下:

  。

复制代码 代码如下:

$ages = array(); foreach ($users as $user) {     $ages[] = $user['age']; } 。

  。

array_multisort($ages, SORT_ASC, $users),

  。

执行后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用:

  。

复制代码 代码如下:

array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

  。

2、使用usort 。

使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列:

  。

复制代码 代码如下:

usort($users, function($a, $b) {
            $al = strlen($a['name']);
            $bl = strlen($b['name']);
            if ($al == $bl)
                return 0;
            return ($al > $bl) ? -1 : 1;
        });

  。

这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,并计算长度,而后比较长度就可以了.

笔者更喜欢第二种方法,因为少了提取排序内容到一维数组的步骤,而且排序方法更为灵活.

最后此篇关于php二维数组排序方法(array_multisort usort)的文章就讲到这里了,如果你想了解更多关于php二维数组排序方法(array_multisort usort)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com