php自定義排序uasort函數(shù)示例【二維數(shù)組按指定鍵值排序】
本文實例講述了php自定義排序uasort函數(shù)。分享給大家供大家參考,具體如下:
項目需要風險排序,按 I(安全)<L(低風險)<M(中風險)<H(高風險) 的級別來排序
由于H排在I的前面,所以不能直接用sort來排序,要自定義。
用uasort()函數(shù)來自定義排序:
/* * 二維數(shù)組按指定鍵值排須 */ function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序//按 I<L<M<H 排序 $arr_nums=$arr=array(); foreach($array as $k=>$v){ $arr_nums[$k]=$v[$key]; } if($order=='asc'){ uasort($arr_nums,'my_sort_asc'); }else{ uasort($arr_nums,'my_sort_desc'); } foreach($arr_nums as $k=>$v){ $arr[$k]=$array[$k]; } return $arr; } function my_sort_desc($a,$b){ if($a==$b) return 0; if($a=='I' && $b!='I') return 1; if($a=='L' && $b!='I') return 1; if($a=='L' && $b=='I') return -1; if($a=='M' && $b!='H') return -1; if($a=='M' && $b=='H') return 1; if($a=='H' && $b!='H') return -1; } function my_sort_asc($a,$b){ if($a==$b) return 0; if($a=='I' && $b!='I') return -1; if($a=='L' && $b!='I') return -1; if($a=='L' && $b=='I') return 1; if($a=='M' && $b!='H') return 1; if($a=='M' && $b=='H') return -1; if($a=='H' && $b!='H') return 1; }
PS:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:
在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)組(Array)操作技巧大全》、《php排序算法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《php字符串(string)用法總結(jié)》及《PHP常用遍歷算法與技巧總結(jié)》
希望本文所述對大家PHP程序設(shè)計有所幫助。
相關(guān)文章
PHP判斷FORM表單或URL參數(shù)來的數(shù)據(jù)是否為整數(shù)的方法
這篇文章主要介紹了PHP判斷FORM表單或URL參數(shù)來的數(shù)據(jù)是否為整數(shù)的方法,需要的朋友可以參考下2016-03-03PHP file_get_contents 函數(shù)超時的幾種解決方法
在使用file_get_contents函數(shù)的時候,經(jīng)常會出現(xiàn)超時的情況,在這里要通過查看一下錯誤提示,看看是哪種錯誤,比較常見的是讀取超時,這種情況大家可以通過一些方法來盡量的避免或者解決。2009-07-07如何使用Casbin作為ThinkPHP的權(quán)限控制中間件
本文介紹了如何使用Casbin作為ThinkPHP的權(quán)限控制中間件,感興趣的同學,可以參考下,理解其原理。2021-05-05php對文件夾進行相關(guān)操作(遍歷、計算大?。?/a>
這篇文章主要介紹了php對文件夾進行相關(guān)操作,包括遍歷并打印指定目錄下所有文件和計算文件大小去空白,以及去重復值等,感興趣的小伙伴們可以參考一下2015-11-11php array_walk() 數(shù)組函數(shù)
函數(shù)array_walk():單一數(shù)組回調(diào)函數(shù)---對數(shù)組中的每個成員應用用戶函數(shù)2011-07-07