一、sort函數介紹
sort() 是一個 PHP 函數,用於對數組進行升序排列,相反,rsort() 函數則是降序排列。sort() 函數使用內部演算法對數組處理,而不是使用外來程序庫。
$arr = array(5,3,7,1,9); sort($arr); print_r($arr); /*輸出: Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 ) */
二、sort函數的參數
sort() 函數有兩個必需參數,其中第一個參數是待排序的數組,第二個參數是可選的排序方式。
- 1表示升序排列,即從小到大排序;
- 0或未傳入參數表示降序排列,即從大到小排序。
$arr = array(5,3,7,1,9); sort($arr, 1); print_r($arr); /*輸出: Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 ) */ $arr = array(5,3,7,1,9); sort($arr, 0); print_r($arr); /*輸出: Array ( [0] => 9 [1] => 7 [2] => 5 [3] => 3 [4] => 1 ) */
三、sort函數對字元串/中文字元串/多維數組的排序
1.字元串
sort() 函數也可以使用在字元串中,可以進行簡單的字母排序,將單詞按字母順序重排。例如:
$str = "hello world"; $arr = str_split($str); sort($arr); $str = implode("", $arr); echo $str; /*輸出: dehllloorw */
2.中文字元串
當需要對中文字元串進行排序時,需要使用到 ICU 的支持。可以使用 intl 擴展來實現,具體代碼如下:
if (extension_loaded("intl")) { $arr = array("北京", "上海", "深圳", "廣州"); $arrLenth = []; foreach ($arr as $value) { $arrLenth[] = grapheme_strlen($value); } array_multisort($arrLenth, SORT_ASC, $arr); print_r($arr); } else { echo "intl擴展未安裝"; } /*輸出: Array ( [0] => 北京 [1] => 廣州 [2] => 上海 [3] => 深圳 ) */
3.多維數組
多維數組的排序可以使用 uasort() 函數和 usort() 函數,兩者的區別在於回調函數的傳參方式不同。usort() 傳參只有兩個,比較的兩個元素,而 uasort() 則傳3個參數,第一個是待排序的數組,第二個是比較的兩個元素,第三個則是比較方式。以下代碼為根據數組某個項進行排序示例:
$arr = array( array("name" => "張三", "age" => 20), array("name" => "李四", "age" => 18), array("name" => "王五", "age" => 22), ); usort($arr, function ($a, $b) { if ($a["age"] == $b["age"]) { return 0; } return ($a["age"] Array ( [name] => 李四 [age] => 18 ) [1] => Array ( [name] => 張三 [age] => 20 ) [2] => Array ( [name] => 王五 [age] => 22 ) ) */
四、結語
sort() 函數是 PHP 中實現簡單快捷的數組排序的常用函數,但使用時需要注意在字元串/中文字元串/多維數組的排序情況下,需要特別處理,才能實現符合需求的排序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197054.html