溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何實(shí)現(xiàn)php的排序函數(shù)

發(fā)布時(shí)間:2020-07-15 10:43:53 來(lái)源:億速云 閱讀:150 作者:Leah 欄目:編程語(yǔ)言

這篇文章運(yùn)用簡(jiǎn)單易懂的例子給大家介紹如何實(shí)現(xiàn)php的排序函數(shù),代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

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

sort(array,sortingtype);

如何實(shí)現(xiàn)php的排序函數(shù)

0 = SORT_REGULAR - 默認(rèn)。把每一項(xiàng)按常規(guī)順序排列(Standard ASCII,不改變類(lèi)型)

1 = SORT_NUMERIC - 把每一項(xiàng)作為數(shù)字來(lái)處理。

2 = SORT_STRING - 把每一項(xiàng)作為字符串來(lái)處理。

3 = SORT_LOCALE_STRING - 把每一項(xiàng)作為字符串來(lái)處理,基于當(dāng)前區(qū)域設(shè)置(可通過(guò) setlocale() 進(jìn)行更改)。

4 = SORT_NATURAL - 把每一項(xiàng)作為字符串來(lái)處理,使用類(lèi)似 natsort() 的自然排序。

5 = SORT_FLAG_CASE - 可以結(jié)合(按位或)SORT_STRING 或 SORT_NATURAL 對(duì)字符串進(jìn)行排序,不區(qū)分大小寫(xiě)。

定義和用法:

sort() 函數(shù)對(duì)索引數(shù)組進(jìn)行升序排序。

rsort() 函數(shù)對(duì)索引數(shù)組進(jìn)行降序排序,其他用法一樣。

注釋?zhuān)罕竞瘮?shù)為數(shù)組中的單元賦予新的鍵名。原有的鍵名將被刪除。

如果成功則返回 TRUE,否則返回 FALSE。

提示:請(qǐng)使用 rsort() 函數(shù)對(duì)索引數(shù)組進(jìn)行降序排序。

sort() 函數(shù)用于對(duì)數(shù)組單元從低到高進(jìn)行排序。

rsort() 函數(shù)用于對(duì)數(shù)組單元從高到低進(jìn)行排序。

asort() 函數(shù)用于對(duì)數(shù)組單元從低到高進(jìn)行排序并保持索引關(guān)系。

PHP asort() 函數(shù)用于對(duì)數(shù)組單元從低到高進(jìn)行排序并保持索引關(guān)系,如果成功則返回 TRUE,失敗則返回 FALSE。

arsort() 函數(shù)用于對(duì)數(shù)組單元從高到低進(jìn)行排序并保持索引關(guān)系。

PHP arsort() 函數(shù)行為與 asort() 相反,對(duì)數(shù)組單元進(jìn)行由高到低排序并保持索引關(guān)系,請(qǐng)參考 asort() 函數(shù)使用。

ksort() 函數(shù)用于對(duì)數(shù)組單元按照鍵名從低到高進(jìn)行排序。

PHP ksort() 函數(shù)用于對(duì)數(shù)組單元按照鍵名從低到高進(jìn)行排序,如果成功則返回 TRUE,失敗則返回 FALSE。本函數(shù)會(huì)保留原來(lái)的鍵名,因此常用于關(guān)聯(lián)數(shù)組。

krsort() 函數(shù)用于對(duì)數(shù)組單元按照鍵名從高到低進(jìn)行排序。

PHP krsort() 函數(shù)行為與 ksort() 相反,對(duì)數(shù)組單元按照鍵名進(jìn)行由高到低排序,請(qǐng)參考 ksort() 函數(shù)使用。

使用用戶(hù)自定義的比較函數(shù)對(duì)數(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

使用這個(gè)方法,會(huì)比較麻煩些,要將age提取出來(lái)存儲(chǔ)到一維數(shù)組里,然后按照age升序排列。具體代碼如下:

代碼如下:<?php
$ages = array();
foreach ($users as $user) {
  $ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);

執(zhí)行后,$users就是排序好的數(shù)組了,可以打印出來(lái)看看。如果需要先按年齡升序排列,再按照名稱(chēng)升序排列,方法同上,就是多提取一個(gè)名稱(chēng)數(shù)組出來(lái),最后的排序方法這樣調(diào)用:

代碼如下:
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
2、使用usort
使用這個(gè)方法最大的好處就是可以自定義一些比較復(fù)雜的排序方法。例如按照名稱(chēng)的長(zhǎng)度降序排列:

代碼如下:
<?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ù),如果有需要也可以單獨(dú)提取出來(lái)。其中$a, $b可以理解為$users數(shù)組下的元素,可以直接索引name值,
并計(jì)算長(zhǎng)度,而后比較長(zhǎng)度就可以了。

關(guān)于如何實(shí)現(xiàn)php的排序函數(shù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI