首頁  >  文章  >  後端開發  >  php如何往數組排序

php如何往數組排序

PHPz
PHPz原創
2023-04-17 16:37:16464瀏覽

PHP是一種廣泛使用的開源腳本語言,主要用於Web開發。在使用PHP開發Web應用程式時,經常需要對資料進行排序。在PHP中,可以使用sort()、rsort()、asort()、arsort()、ksort()、krsort()、usort()、uasort()、uksort()等函數將陣列排序。下面將介紹這些函數的用法。

  1. sort()函數

sort()函數是PHP中用來對陣列進行升序排序的函數。此函數可以對數值型陣列和字串型陣列進行排序,但只能對單一維度的陣列進行排序。程式碼如下:

$numbers = array(4, 2, 8, 6);
sort($numbers);
print_r($numbers); // 输出:Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )

在上面的範例中,sort()函數對數值型陣列$numbers進行了升序排序,並將結果輸出。

  1. rsort()函數

rsort()函數是PHP中用來對陣列進行降序排序的函數。函數與sort()函數類似,只是將排序順序改為降序。程式碼如下:

$numbers = array(4, 2, 8, 6);
rsort($numbers);
print_r($numbers); // 输出:Array ( [0] => 8 [1] => 6 [2] => 4 [3] => 2 )

在上面的範例中,rsort()函數對數值型陣列$numbers進行了降序排序,並將結果輸出。

  1. asort()函數

asort()函數是PHP中用來對陣列進行升序排序的函數,不同於sort()函數,asort()函數會保留原數組中的鍵值。程式碼如下:

$numbers = array("d"=>4, "b"=>2, "c"=>8, "a"=>6);
asort($numbers);
print_r($numbers); // 输出:Array ( [b] => 2 [d] => 4 [a] => 6 [c] => 8 )

在上面的範例中,asort()函數對字串型陣列$numbers進行了升序排序,並保留了原數組中的鍵值。

  1. arsort()函數

arsort()函數是PHP中用來對陣列進行降序排序的函數,與asort()函數類似,也會保留原數組中的鍵值。程式碼如下:

$numbers = array("d"=>4, "b"=>2, "c"=>8, "a"=>6);
arsort($numbers);
print_r($numbers); // 输出:Array ( [c] => 8 [a] => 6 [d] => 4 [b] => 2 )

在上面的範例中,arsort()函數對字串型陣列$numbers進行了降序排序,並保留了原始陣列中的鍵值。

  1. ksort()函數

ksort()函數是PHP中用來對陣列按鍵名進行升序排序的函數。此函數只能對單一維度的陣列進行排序。程式碼如下:

$numbers = array("d"=>4, "b"=>2, "c"=>8, "a"=>6);
ksort($numbers);
print_r($numbers); // 输出:Array ( [a] => 6 [b] => 2 [c] => 8 [d] => 4 )

在上面的範例中,ksort()函數對字串型陣列$numbers按鍵名進行了升序排序。

  1. krsort()函數

krsort()函數是PHP中用來對陣列按鍵名進行降序排序的函數。函數與ksort()函數類似,只是將排序順序改為降序。程式碼如下:

$numbers = array("d"=>4, "b"=>2, "c"=>8, "a"=>6);
krsort($numbers);
print_r($numbers); // 输出:Array ( [d] => 4 [c] => 8 [b] => 2 [a] => 6 )

在上面的範例中,krsort()函數對字串型陣列$numbers按鍵名進行了降序排序。

  1. usort()函數

usort()函數是PHP中用來對陣列進行自訂排序的函數。此函數需要自訂一個用於排序的比較函數,比較函數傳回一個整數值,表示比較結果。如果第一個參數小於第二個參數,則傳回負數;如果第一個參數等於第二個參數,則傳回零;如果第一個參數大於第二個參數,則傳回正數。程式碼如下:

function compare($a, $b) {
    if($a<$b)
        return -1;
    elseif($a==$b)
        return 0;
    else
        return 1;
}
$numbers = array(4, 2, 8, 6);
usort($numbers, "compare");
print_r($numbers); // 输出:Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )

在上面的範例中,usort()函數對數值型陣列$numbers進行了自訂升序排序,比較函數是compare()函數。

  1. uasort()函數

uasort()函數是PHP中用來對陣列進行自訂排序的函數,與usort()函數不同的是,uasort ()函數會保留原數組中的鍵值。程式碼如下:

function compare($a, $b) {
    if($a<$b)
        return -1;
    elseif($a==$b)
        return 0;
    else
        return 1;
}
$numbers = array("d"=>4, "b"=>2, "c"=>8, "a"=>6);
uasort($numbers, "compare");
print_r($numbers); // 输出:Array ( [b] => 2 [d] => 4 [a] => 6 [c] => 8 )

在上面的範例中,uasort()函數對字串型陣列$numbers進行了自訂升序排序,並保留了原始數組中的鍵值。

  1. uksort()函數

uksort()函數是PHP中用來對陣列按鍵名稱進行自訂排序的函數。此函數需要自訂一個用於排序的比較函數,比較函數傳回一個整數值,表示比較結果。程式碼如下:

function compare($a, $b) {
    if($a<$b)
        return -1;
    elseif($a==$b)
        return 0;
    else
        return 1;
}
$numbers = array("d"=>4, "b"=>2, "c"=>8, "a"=>6);
uksort($numbers, "compare");
print_r($numbers); // 输出:Array ( [a] => 6 [b] => 2 [c] => 8 [d] => 4 )

在上面的範例中,uksort()函數對字串型陣列$numbers按鍵名進行了自訂升序排序。

總結

在PHP中,有多種函數可以對陣列進行排序,開發者可以根據需要選擇合適的函數來排序。如果需要對陣列進行自訂排序,可以使用usort()、uasort()、uksort()函數,並自訂一個用於排序的比較函數。如果需要將陣列依鍵名排序,可以使用kso​​rt()、krsort()、uksort()函數,如果要保留原數組中的鍵值,可以使用asort()、arsort()、uasort()函數。

以上是php如何往數組排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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