php排序函數詳細講解(附範例)

2020-07-16 10:05:47

排序的方法多種多樣,通常情況下,我們經常使用到的陣列排序函數有:sort() 、rsort()、asort() 、arsort()、ksort()、krsort()。下面為大家一一詳細介紹。

sort(array,sortingtype);

截圖01.jpg

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中文網:PHP視訊教學

以上就是php排序函數詳細講解(附範例)的詳細內容,更多請關注TW511.COM其它相關文章!