PHP常見數組排序方法小結


1.簡單數組排序 sort() 函數和rsort() 函數:

語法規則:

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

參數:

  第一個參數是排序數組對象

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

    SORT_REGULAR:是默認值,將自動識別數組的元素類型進行排序
    SORT_NUMERIC:用於數組元素排序
    SORT_STRING:用於字符串排序
    SORT_LOCALE_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)
 );

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM