亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

php多維數組自定義排序 uasort()

標簽:
PHP

php内置的排序函数很多;正反各种排;

常用的排序函数:

sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序

基本都能满足需求了;关于这些函数的使用方法就不多啰嗦了;

但是在项目的实际开发中还是会有些更加苛刻的排序需求;今天要介绍的排序函数是: uasort()

uasort主要是用在需要按照自定义的方法并且保留索引关系对多维数组的排序上;

有如下数组


$sort_array array(    "array1" => array(        'word'=>'test1',        'sortnumber'=>1,    ),    'array3'=>array(        'word'=>'test4',        'sortnumber'=>4,    ),    'array2'=>array(        'word'=>'test3',        'sortnumber'=>3,    ),    'array5'=>array(        'word'=>'test5',    ),    'array4'=>array(        'word'=>'test2',        'sortnumber'=>2,    ),);

需求是按照sortnumber以升序的方式排序;

首先需要写一个自定义排序的规则;


// 自定义排序函数function my_sort($a,$b){    $prev = isset($a['sortnumber']) ? $a['sortnumber'] : 0;    $next = isset($b['sortnumber']) ? $b['sortnumber'] : 0;    if($prev == $next)return 0;    return ($prev<$next) ? -1 : 1;}echo '<pre>排序前:<br>';print_r($sort_array);uasort($sort_array"my_sort");echo "排序后:<br>";print_r ($sort_array);

得到的结果:

排序前:Array(    [array1] => Array        (            [word] => test1            [sortnumber] => 1        )    [array3] => Array        (            [word] => test4            [sortnumber] => 4        )    [array2] => Array        (            [word] => test3            [sortnumber] => 3        )    [array5] => Array        (            [word] => test5        )    [array4] => Array        (            [word] => test2            [sortnumber] => 2        ))排序后:Array(    [array5] => Array        (            [word] => test5        )    [array1] => Array        (            [word] => test1            [sortnumber] => 1        )    [array4] => Array        (            [word] => test2            [sortnumber] => 2        )    [array2] => Array        (            [word] => test3            [sortnumber] => 3        )    [array3] => Array        (            [word] => test4            [sortnumber] => 4        ))

最后需要提醒的是:自定义的函数要使用isset检测下需要排序的字段是否存在如不存在赋个默认的0;不然会有报错提示;


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消