首頁 >後端開發 >php教程 >PHP中usort()的使用方法

PHP中usort()的使用方法

墨辰丷
墨辰丷原創
2018-05-15 18:03:403203瀏覽


這篇文章主要介紹PHP中usort()的使用方法,有興趣的朋友參考下,希望對大家有幫助。

函數為陣列進行自己自訂排序,排序規則由 $cmp_function 定義。 傳回值為ture 或false。

現在先對簡單的一個函數進行分析:

<?php
function re($a,$b){
           return ($a<$b)?1:-1;
          }5 $x=array(1,3,2,5,9);
      usort($x, &#39;re&#39;)    
      print_r($x);
?>


列印結果為:

Array(
    [0] => 9
    [1] => 5
    [2] => 3
    [3] => 2
    [4] => 1<br>)

實現了陣列的倒序排列。分析如下:

  usort兩兩擷取陣列中的數值,並依序輸入自訂函數中,自訂函數依內容傳回1或-1;usort依傳回值為1或-1 ,得到傳入的數值1「大於」或「小於」數值2,然後對數值進行從小到大的排序。 即:傳回值為1,說明數值1「大於」數值2,然後排序:數值2—>數值1;傳回值為-1,說明數值1「小於」數值2,然後排序:數值1->數值2。

  上面自訂函數中,$a8df29a3c2d9057b166eba5bf4c53d9ab$a來排序;如果錯誤返回-1,說明說明$a"小於"$b,則依序$a->$b來排序。

  下面進行一個較為複雜的排序:對一個陣列先奇後偶,然後再進行從大到小排序。

function Compare($str1, $str2) { 
    if (($str1 % 2 == 0) && ($str2 %2 == 0)) { 
        if ($str1 > $str2) 
            return - 1; 
        else 
            return 1; 
    } 
    if ($str1 % 2 == 0) 
        return 1;
    if ($str2 % 2 == 0)
        return -1;
    return ($str2 > $str1) ? 1 : - 1;
}
$scores = array (22,57,55,12,87,56,54,11);
usort ( $scores, &#39;Compare&#39; );
print_r ( $scores );

實作步驟為:

1》判斷輸入的兩個值是否都為偶數,都為偶數,進行從大到小排序;

2》如果不都是偶數,則至少一個為奇數,先判斷$str1是否為偶數,如果為偶數,即:if($str1%2==0)成立,則返回1,意味著$str1“大於”$str2 ,則usort函數進行排序為「小的」$str2->「大的」$str1(偶數);

3》如果$str1為奇數,上面不傳回任何值,接著判斷$str2是否為偶數,如果為偶數,則返回-1,意味著$str1“小於”$str2,則usort函數進行排序為“小的”$str1(奇數)->“大的”$str2(偶數) ;

4》如果兩個值都為奇數,則上面不傳回任何值,接著對$str1和$str2進行從大到小排序;

輸出結果為:

Array(
    [0] => 87
    [1] => 57
    [2] => 55
    [3] => 11
    [4] => 56
    [5] => 54
    [6] => 22
    [7] => 12
)

相關推薦:

如何運用PHP函數usort()實作自訂排序_PHP教學

PHP_I love U之(1) php衣食父母:使用usort()函數為二維數組排序

PHP中的usort() 函數是非穩定排序怎麼辦?

以上是PHP中usort()的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn