您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹如何實現php的排序函數,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
排序的方法多種多樣,通常情況下,我們經常使用到的數組排序函數有:sort() 、rsort()、asort() 、arsort()、ksort()、krsort()。下面為大家一一詳細介紹。
sort(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() 函數對索引數組進行降序排序。
sort() 函數用于對數組單元從低到高進行排序。
rsort() 函數用于對數組單元從高到低進行排序。
asort() 函數用于對數組單元從低到高進行排序并保持索引關系。
PHP asort() 函數用于對數組單元從低到高進行排序并保持索引關系,如果成功則返回 TRUE,失敗則返回 FALSE。
arsort() 函數用于對數組單元從高到低進行排序并保持索引關系。
PHP arsort() 函數行為與 asort() 相反,對數組單元進行由高到低排序并保持索引關系,請參考 asort() 函數使用。
ksort() 函數用于對數組單元按照鍵名從低到高進行排序。
PHP ksort() 函數用于對數組單元按照鍵名從低到高進行排序,如果成功則返回 TRUE,失敗則返回 FALSE。本函數會保留原來的鍵名,因此常用于關聯數組。
krsort() 函數用于對數組單元按照鍵名從高到低進行排序。
PHP krsort() 函數行為與 ksort() 相反,對數組單元按照鍵名進行由高到低排序,請參考 ksort() 函數使用。
使用用戶自定義的比較函數對數組 $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提取出來存儲到一維數組里,然后按照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值, 并計算長度,而后比較長度就可以了。
關于如何實現php的排序函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。