usort()函數使用用戶自定義比較函數對數組中對元素進行排序,如果排序的數組需要使用不尋常的標準來進行排序,我們就使用該函數.
下面我直接貼出我的代碼,在代碼中我會有一個詳細的註釋.
1.對一維數組使用自定義函數進行排序.
//定義一個一維數組 $array = [5,6,9,3,10]; //自定義比較函數,比較函數有兩個參數,參數的意義是數組中的某個元素的鍵值.比 //較函數中數組的元素鍵值比較,必須返回一個大於,小於或者等於0的整數 function rank($a,$b){ //如果$a元素小於$b元素 //如果是按照升序的排列,應該返回一個負整數,代表將小的元素放在前面 //如果是按照升序的降序,應該返回一個正整數,代表將大的元素放在前面 if($a < $b){ return -1; }elseif ($a > $b){ //如果$a 大於 $b //如果按照升序排列,應該返回一個正整數. //如果按照降序排列,就返回一個負整數. return 1; }else{ //如果$a = $b,返回0 return 0; } } //我們使用usort函數調用自定義排序函數,對數組進行排序,usrot函數是對數組元素賦予了新的鍵名.舊的鍵名被刪除。 //第二個參數是回調函數,就是我們自定義的排序函數. usort($array,'rank'); var_dump($array);
二.對二維數組進行排序,按照不尋常對數組進行排序.
<?php //定義一個二維數組 $array = [['count'=>5],['count'=>3],['count'=>9],['count'=>6],['count'=>15]]; var_dump($array); //自定義排序函數,我們按照索引數組鍵值中每個關聯數組中count索引名的鍵值進行排序。 //前面已經說過了,自定義排序函數的參數是數組的某個元素的鍵值. function rank($a,$b){ if($a['count'] < $b['count']){ return -1; }elseif ($a['count'] > $b['count']){ return 1; }else{ return 0; } } //使用usort函數調用自定義的排序函數,進行排序 usort($array,'rank'); var_dump($array);
注意:使用自定義比較函數進行排序,兩個參數排序,必須返回一個正整數或者負整數,或者0,usort函數使用自定義函數進行排序,是將舊鍵名刪除,重新賦與鍵值新的鍵名,而不是將鍵名排序.