排序的方法多種多樣,通常情況下,我們經(jīng)常使用到的數(shù)組排序函數(shù)有:sort() 、rsort()、asort() 、arsort()、ksort()、krsort()。下面為大家一一詳細(xì)介紹。
sort(array,sortingtype);
0 = SORT_REGULAR – 默認(rèn)。把每一項按常規(guī)順序排列(Standard ASCII,不改變類型)
1 = SORT_NUMERIC – 把每一項作為數(shù)字來處理。
2 = SORT_STRING – 把每一項作為字符串來處理。
3 = SORT_LOCALE_STRING – 把每一項作為字符串來處理,基于當(dāng)前區(qū)域設(shè)置(可通過 setlocale() 進(jìn)行更改)。
4 = SORT_NATURAL – 把每一項作為字符串來處理,使用類似 natsort() 的自然排序。
5 = SORT_FLAG_CASE – 可以結(jié)合(按位或)SORT_STRING 或 SORT_NATURAL 對字符串進(jìn)行排序,不區(qū)分大小寫。
定義和用法:
sort() 函數(shù)對索引數(shù)組進(jìn)行升序排序。
rsort() 函數(shù)對索引數(shù)組進(jìn)行降序排序,其他用法一樣。
注釋:本函數(shù)為數(shù)組中的單元賦予新的鍵名。原有的鍵名將被刪除。
如果成功則返回 TRUE,否則返回 FALSE。
提示:請使用 rsort() 函數(shù)對索引數(shù)組進(jìn)行降序排序。
sort() 函數(shù)用于對數(shù)組單元從低到高進(jìn)行排序。
rsort() 函數(shù)用于對數(shù)組單元從高到低進(jìn)行排序。
asort() 函數(shù)用于對數(shù)組單元從低到高進(jìn)行排序并保持索引關(guān)系。
PHP asort() 函數(shù)用于對數(shù)組單元從低到高進(jìn)行排序并保持索引關(guān)系,如果成功則返回 TRUE,失敗則返回 FALSE。
arsort() 函數(shù)用于對數(shù)組單元從高到低進(jìn)行排序并保持索引關(guān)系。
PHP arsort() 函數(shù)行為與 asort() 相反,對數(shù)組單元進(jìn)行由高到低排序并保持索引關(guān)系,請參考 asort() 函數(shù)使用。
ksort() 函數(shù)用于對數(shù)組單元按照鍵名從低到高進(jìn)行排序。
PHP ksort() 函數(shù)用于對數(shù)組單元按照鍵名從低到高進(jìn)行排序,如果成功則返回 TRUE,失敗則返回 FALSE。本函數(shù)會保留原來的鍵名,因此常用于關(guān)聯(lián)數(shù)組。
krsort() 函數(shù)用于對數(shù)組單元按照鍵名從高到低進(jìn)行排序。
PHP krsort() 函數(shù)行為與 ksort() 相反,對數(shù)組單元按照鍵名進(jìn)行由高到低排序,請參考 ksort() 函數(shù)使用。
使用用戶自定義的比較函數(shù)對數(shù)組 $a 中的元素進(jìn)行排序:
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ù)組出來,最后的排序方法這樣調(diào)用: 代碼如下: array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users); 2、使用usort 使用這個方法最大的好處就是可以自定義一些比較復(fù)雜的排序方法。例如按照名稱的長度降序排列: 代碼如下: <?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ù)組排序方法,想了解