首頁 > 後端開發 > php教程 > php排序函數詳細講解(附實例)

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

王林
發布: 2023-04-07 11:12:02
原創
5133 人瀏覽過

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

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

sort(array,sortingtype);
登入後複製

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

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[&#39;age&#39;];
}
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[&#39;name&#39;]);
      $bl = strlen($b[&#39;name&#39;]);
      if ($al == $bl) 
          return 0;      
          return ($al > $bl) ? -1 : 1;
    });

这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,
并计算长度,而后比较长度就可以了。
登入後複製

以上是工作中常用的数组排序方法,想了解更多相关问题请访问PHP中文网:PHP视频教程

以上是php排序函數詳細講解(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板