sort(array,sortingtype);
參數 |
描述 |
array |
必需。規定要進行排序的數組。 |
sortingtype |
可選。規定如何比較數組的元素/項目。可能的值: |
0 = SORT_REGULAR - 默認。把每一項按常規順序排列(Standard ASCII,不改變類型)
1 = SORT_NUMERIC - 把每一項作為數字來處理。
2 = SORT_STRING - 把每一項作為字符串來處理。
3 = SORT_LOCALE_STRING - 把每一項作為字符串來處理,基於當前區域設置(可通過 setlocale() 進行更改)。
4 = SORT_NATURAL - 把每一項作為字符串來處理,使用類似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以結合(按位或)SORT_STRING 或 SORT_NATURAL 對字符串進行排序,不區分大小寫。
定義和用法
sort() 函數對索引數組進行升序排序。
rsort() 函數對索引數組進行降序排序,其他用法一樣。
注釋:本函數為數組中的單元賦予新的鍵名。原有的鍵名將被刪除。
如果成功則返回 TRUE,否則返回 FALSE。
提示:請使用 rsort() 函數對索引數組進行降序排序。
返回值 |
若成功則返回 TRUE,若失敗則返回 FALSE。 |
- sort() 函數用於對數組單元從低到高進行排序。
- rsort() 函數用於對數組單元從高到低進行排序。
- asort() 函數用於對數組單元從低到高進行排序並保持索引關系。
PHP asort() 函數用於對數組單元從低到高進行排序並保持索引關系,如果成功則返回 TRUE,失敗則返回 FALSE。
- arsort() 函數用於對數組單元從高到低進行排序並保持索引關系。
PHP arsort() 函數行為與 asort() 相反,對數組單元進行由高到低排序並保持索引關系,請參考 asort() 函數使用。
- ksort() 函數用於對數組單元按照鍵名從低到高進行排序。
PHP ksort() 函數用於對數組單元按照鍵名從低到高進行排序,如果成功則返回 TRUE,失敗則返回 FALSE。本函數會保留原來的鍵名,因此常用於關聯數組。
- krsort() 函數用於對數組單元按照鍵名從高到低進行排序。
PHP krsort() 函數行為與 ksort() 相反,對數組單元按照鍵名進行由高到低排序,請參考 ksort() 函數使用。
usort(array,myfunction);
使用用戶自定義的比較函數對數組 $a 中的元素進行排序:
<?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提取出來存儲到一維數組里,然后按照age升序排列。具體代碼如下:
代碼如下:
<?php
$ages = array();
foreach ($users as $user) {
$ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);
執行后,$users就是排序好的數組了,可以打印出來看看。如果需要先按年齡升序排列,再按照名稱升序排列,方法同上,就是多提取一個名稱數組出來,最后的排序方法這樣調用:
代碼如下:
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;
});
這里使用了匿名函數,如果有需要也可以單獨提取出來。其中$a, $b可以理解為$users數組下的元素,可以直接索引name值,並計算長度,而后比較長度就可以了。