首頁  >  文章  >  後端開發  >  PHP常見數組排序方法小匯總

PHP常見數組排序方法小匯總

藏色散人
藏色散人轉載
2020-12-15 09:30:144461瀏覽

1.簡單陣列排序sort() 函數與rsort() 函數:

語法規則:

bool sort(array &array [,int sort_flags]
bool rsort(array &array [.int_sort_flags]

參數:

  第一個參數是排序數組物件

  第二個參數是可以選擇的可選值:

    SORT_REGULAR:是預設值,將自動將自動值辨識數組的元素型別進行排序
    SORT_NUMERIC:用於數組元素排序
    SORT_STRING:用於字串排序
    SORT_STRING:用於字串排序

   根據目前的locale設定來把元素當作字串比較

範例:

$a=array(4,7,9,1);
sort($a);
pirnt_r($a);
rsort($a);
print_r($a);

2.依照鍵名對陣列排序

定義: ksort() 函數依照鍵名對陣列進行有小到大的排序。 krsort()ksort()

函數相反,排序後為陣列值保持原來的鍵。

範例

$data= array(5=>"five",8=>"eight",1=>"one",7=>"seven");
ksrot($data);
print_r($data);
krsot($data);
print_r($data);

3.依照元素值排序

定義: asort() 從小到大/  arsort()

從大到小,用這個函數排序,原始鍵名將會被忽略,使用依序數字重新索引數組下標

範例:

$data=array("a"=>1,"b"=>2,"c"=>3);
asort($data);
print_r($data);
arsort($data);
print_r($data);

4.自然排序

定義: 是一種非常特殊的排序方式,這種方式使用認知而不是使用計算規則,這種特性稱為-自然排序法,即數字從1到9,字母從a-z,短者優先。

範例:

$data=array("file1.txt","file11.txt","file111.txt");
natsort($data);//普通自然排序
natcasesort($data);//忽略大小写

5.根據使用者自訂排序規則

語法規則: 

bool usort(array &array ,callback cmp_function)
bool uasort(array &array,callback cmp_function)
bool uksort(array &array,callback cmp_function)

說明: 自訂回呼函數,需要兩個參數,分別是數組兩個連續元素,比較第一個參數小於,大於,等於第二個參數是分別回傳0,1,-1

範例: 

$data= array("ab","abc","a","ac","abcd");
usrot($data,"mysortByLen");
function mysortByLen($one,$two){
 if(strlen($one)== strlen($two)){
  return 0;
 }else{
 return (strlen($one)>strlen($two))?1:-1;
}

6.多維陣列排序

定義: array_multisort()

函數對多個陣列排序,或根據某一維或多維度對多維數組排序。

bool array_multisort(array array1 [,mixed arg,[,array ....]])
範例:

$data=array(
  array("id"=>1,"name"=>4),
  array("id"=>1,"name"=>2),
  array("id"=>2,"name"=>3)
);
foreach($data as $key=>$value){
 $ids[$key]=$value["id"];
 $names[$key]=$value["name"]
}
array_multisort($data,$ids,$names);
print_r($data);

輸出結果:

array(    array("id"=>1,"name"=>2),    array("id"=>1,"name"=>4),    array("id"=>2,"name"=>3)
 );
 推薦:《PHP影片教學》###

以上是PHP常見數組排序方法小匯總的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除