排序的方法多種多樣,通常情況下,我們經常使用到的數(shù)組排序函數(shù)有:sort() 、rsort()、asort() 、arsort()、ksort()、krsort()。下面為大家一一詳細介紹。
sort(array,sortingtype);
0 = SORT_REGULAR – 默認。把每一項按常規(guī)順序排列(Standard ASCII,不改變類型)
1 = SORT_NUMERIC – 把每一項作為數(shù)字來處理。
2 = SORT_STRING – 把每一項作為字符串來處理。
3 = SORT_LOCALE_STRING – 把每一項作為字符串來處理,基于當前區(qū)域設置(可通過 setlocale() 進行更改)。
4 = SORT_NATURAL – 把每一項作為字符串來處理,使用類似 natsort() 的自然排序。
5 = SORT_FLAG_CASE – 可以結合(按位或)SORT_STRING 或 SORT_NATURAL 對字符串進行排序,不區(qū)分大小寫。
定義和用法:
sort() 函數(shù)對索引數(shù)組進行升序排序。
rsort() 函數(shù)對索引數(shù)組進行降序排序,其他用法一樣。
注釋:本函數(shù)為數(shù)組中的單元賦予新的鍵名。原有的鍵名將被刪除。
如果成功則返回 TRUE,否則返回 FALSE。
提示:請使用 rsort() 函數(shù)對索引數(shù)組進行降序排序。
sort() 函數(shù)用于對數(shù)組單元從低到高進行排序。
rsort() 函數(shù)用于對數(shù)組單元從高到低進行排序。
asort() 函數(shù)用于對數(shù)組單元從低到高進行排序并保持索引關系。
PHP asort() 函數(shù)用于對數(shù)組單元從低到高進行排序并保持索引關系,如果成功則返回 TRUE,失敗則返回 FALSE。
arsort() 函數(shù)用于對數(shù)組單元從高到低進行排序并保持索引關系。
PHP arsort() 函數(shù)行為與 asort() 相反,對數(shù)組單元進行由高到低排序并保持索引關系,請參考 asort() 函數(shù)使用。
ksort() 函數(shù)用于對數(shù)組單元按照鍵名從低到高進行排序。
PHP ksort() 函數(shù)用于對數(shù)組單元按照鍵名從低到高進行排序,如果成功則返回 TRUE,失敗則返回 FALSE。本函數(shù)會保留原來的鍵名,因此常用于關聯(lián)數(shù)組。
krsort() 函數(shù)用于對數(shù)組單元按照鍵名從高到低進行排序。
PHP krsort() 函數(shù)行為與 ksort() 相反,對數(shù)組單元按照鍵名進行由高到低排序,請參考 ksort() 函數(shù)使用。
使用用戶自定義的比較函數(shù)對數(shù)組 $a 中的元素進行排序:
usort(array,myfunction);
<?php function my_sort($a,$b){ if ($a==$b) return 0; return ($a<$b)?-1:1; } $a=array(4,2,8,6); usort($a,"my_sort"); $arrlength=count($a); for($x=0;$x<$arrlength;$x++) { echo $a[$x]; echo "<br>"; }?>
1、使用array_multisort 使用這個方法,會比較麻煩些,要將age提取出來存儲到一維數(shù)組里,然后按照age升序排列。具體代碼如下: 代碼如下:<?php $ages = array(); foreach ($users as $user) { $ages[] = $user['age']; } array_multisort($ages, SORT_ASC, $users); 執(zhí)行后,$users就是排序好的數(shù)組了,可以打印出來看看。如果需要先按年齡升序排列,再按照名稱升序排列,方法同上,就是多提取一個名稱數(shù)組出來,最后的排序方法這樣調用: 代碼如下: array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users); 2、使用usort 使用這個方法最大的好處就是可以自定義一些比較復雜的排序方法。例如按照名稱的長度降序排列: 代碼如下: <?php usort($users, function($a, $b) { $al = strlen($a['name']); $bl = strlen($b['name']); if ($al == $bl) return 0; return ($al > $bl) ? -1 : 1; }); 這里使用了匿名函數(shù),如果有需要也可以單獨提取出來。其中$a, $b可以理解為$users數(shù)組下的元素,可以直接索引name值, 并計算長度,而后比較長度就可以了。
以上是工作中常用的數(shù)組排序方法,想了解