php数组排序-自定义排序usort

2 篇文章 0 订阅
1 篇文章 0 订阅

1. 一维数组排序

<?php

function func_sort($a,$b){

        if($a == $b){

            return 0;

        }

        return $a>$b ? -1 : 1;

}


$arr = [1,3,7,6,8];

usort($arr,'func_sort');

var_dump($arr);

输出:

array(5) {

  [0]=>

  int(8)

  [1]=>

  int(7)

  [2]=>

  int(6)

  [3]=>

  int(3)

  [4]=>

  int(1)

}


2. 多维数组排序(根据某个值排序)

<?php

function func_array_sort($a , $b){

        if($a['sort'] == $b['sort']){

                return 0;

        }

        return $a['sort']>$b['sort'] ? -1 : 1;


}


$arr = array(['sort'=>4 , 'name'=>'red'] , ['sort'=>1 , 'name'=>'black'] , ['sort'=>2 , 'name'=>'yellow'], ['sort'=>3 , 'name'=>'bule']);

usort($arr , 'func_array_sort');

print_r($arr);

输出:

Array

(

    [0] => Array

        (

            [sort] => 4

            [name] => red

        )


    [1] => Array

        (

            [sort] => 3

            [name] => bule

        )


    [2] => Array

        (

            [sort] => 2

            [name] => yellow

        )


    [3] => Array

        (

            [sort] => 1

            [name] => black

        )


)


3. 在调用对象中的方法

<?php

class Sort{


        static function func_array_sort($a , $b){

                if($a['sort'] == $b['sort']){

                        return 0;

                }

                return $a['sort']>$b['sort'] ? -1 : 1;


        }



}


$arr = array(['sort'=>4 , 'name'=>'red'] , ['sort'=>1 , 'name'=>'black'] , ['sort'=>2 , 'name'=>'yellow'], ['sort'=>3 , 'name'=>'bule']);

usort($arr , array('Sort' , 'func_array_sort'));

print_r($arr);

输出:

Array

(

    [0] => Array

        (

            [sort] => 4

            [name] => red

        )


    [1] => Array

        (

            [sort] => 3

            [name] => bule

        )


    [2] => Array

        (

            [sort] => 2

            [name] => yellow

        )


    [3] => Array

        (

            [sort] => 1

            [name] => black

        )


)


*注意:如果调用类自身的方法,可用usort($arr , array($this , 'func_array_sort'));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值