PHP二维数组按某个字段的值进行排序【PHP太空船运算符】

  • 1
  • 110 次浏览
  • A+
所属分类:PHP 技术杂谈

usort(array,myfunction);

定义和用法

usort() 使用用户自定义的比较函数对数组进行排序。

$a <=> $b	//PHP7新增  太空船运算符(组合比较符)当$a小于、等于、大于 $b时 分别返回一个小于、等于、大于0的 int 值。

实例:

public function arraySort()
    {
        $res = [
            ['name' =>'小明','age' => 20],
            ['name' =>'小李','age' => 37],
            ['name' =>'小张','age' => 18],
            ['name' =>'小王','age' => 2],
            ['name' =>'小马','age' => 7],
            ['name' =>'小孙','age' => 40]
        ];
        return $this->sortForArray($res,1);
    }

 /**
     *  二位数组排序
     *
     * @param array $data
     * @param int   $type  0  顺序  1  倒序
     * @return array
     * @created at 2021/8/10 9:59 上午
     */
    public function sortForArray(array $data, int $type = 0): array
    {
        switch ($type){
            case 1:
                usort($data, function ($a,$b){
                    return -($a['age'] <=> $b['age']);
                });
                break;
            default:
                usort($data,function ($a, $b){
                    return $a['age'] <=> $b['age'];
                });
        }

        return $data;
    }

结果:

[
    {
        "name": "小孙",
        "age": 40
    },
    {
        "name": "小李",
        "age": 37
    },
    {
        "name": "小明",
        "age": 20
    },
    {
        "name": "小张",
        "age": 18
    },
    {
        "name": "小马",
        "age": 7
    },
    {
        "name": "小王",
        "age": 2
    }
]

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 李晓琪 0

      学到了