PHP 數組排序方法總結

來源:互聯網
上載者:User
現如今PHP已經成為了世界上的流行語言,我們在前面簡單的介紹了一些PHP數組的定義和使用方法。但是我們需要深入學習下PHP數組的相關操作。首先接觸的就是PHP數組排序、降序的排序問題。
sort:本函數為 array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。
rsort:本函數對數組進行逆向排序(最高到最低)。 刪除原有的鍵名而不僅是重新排序。
asort:對數組進行排序並保持索引關係
arsort:對數組進行逆向排序並保持索引關係
ksort:對數組按照鍵名排序,保留鍵名到資料的關聯
krsort:對數組按照鍵名逆向排序,保留鍵名到資料的關聯
natsort:對字母數字字串進行排序並保持原有鍵/值的關聯
natcasesort:同natsort排序演算法,但不區分大小寫字母排序
PHP 數組排序(sort)
數字索引數組排序:
函數:sort(array, [sort type])
說明:sort()函數按升序對指定數組(第一個參數)進行排序。
sort函數第二參數作用為指定排序類型,是選擇性參數,可能的值為:
SORT_REGULAR: 預設值,不改變類型進行排序;
SORT_NUMERIC: 把值作為數字進行排序;
SORT_STRING: 把值作為字串進行排序;
如數組中有4和”37″,按數字排序,4小於”37″;按字串排序,4大於”37″;

代碼如下:

<?php $a = array(4,"37",3,100,0,-5); sort($a); for ($i=0; $i<6; ++$i){ echo $a[$i]." "; } echo "<br />"; sort($a,SORT_STRING); for ($i=0; $i<6; ++$i){ echo $a[$i]." "; } echo "<br />"; ?>

輸出結果:

-5 0 3 4 37 100
-5 0 100 3 37 4
降序排序:rsort(array, [sort type])
參數用法與sort函數相同。

關聯陣列排序:
函數:asort(array, [sort type])
說明:根據關聯陣列的元素值進行升序排序。參數使用見上面的sort函數。

函數:ksort(array, [sort type])
說明:根據關聯陣列的關鍵字進行升序排序。參數使用見上面的sort函數。

代碼如下:

<?php $a = array( "good" => "bad", "right" => "wrong", "boy" => "girl"); echo "value sort<br />"; asort($a); foreach($a as $key => $value){ echo "$key : $value<br />"; } echo "<br />key sort<br />"; ksort($a); foreach($a as $key => $value){ echo "$key : $value<br />"; } ?>

輸出結果:
value sort
good : bad
boy : girl
right : wrong

key sort
boy : girl
good : bad
right : wrong
降序排序:
arsort(array, [sort type]) 與 asort對應
krsort(array, [sort type]) 與 ksort對應

快速建立數組的函數range()

比如range()函數可以快速建立從1到9的數字數組:

代碼如下:

<?php $numbers=range(1,9); echo $numbers[1]; ?>

當然,使用range(9,1)則建立了9到1的數字數組。同時,range()還可以建立從a到z 的字元數組:

代碼如下:

<?php $numbers=range(a,z); foreach ($numbers as $mychrs) echo $mychrs." "; ?>

使用字元數組時注意大小寫,比如range(A,z)和range(a,Z)是不一樣的。range()函數還具有第三個參數,該參數的作用是設定步長,比如range(1,9,3)建立的數組元素是:1、4、7。常見PHP數組排序一般數組中的各元素均以字元或數字表現的,所以可對數組元素進行升序排列,該功能函數為sort()。比如:

代碼如下:

<?php $people=array('name','sex','nation','birth'); foreach ($people as $mychrs) echo $mychrs." "; sort($people); echo "<br />---排序後---<br />"; foreach ($people as $mychrs) echo $mychrs." "; ?>

升序排序後的數組元素顯示為 birth name nation sex,當然,sort()函數是區分字母大小寫(字母從大到小的順序是:A…Z…a…z)

Sort()函數還具有第二參數,用來說明PHP數組排序升序的規則是用來比較數字還是字串的。比如:

代碼如下:

<?php echo "---按數字升序排序---<br />"; $num2=array('26','3',); sort($num2,SORT_NUMERIC); foreach ($num2 as $mychrs) echo $mychrs." "; echo "<br />---按字元升序排序---<br />"; $num3=array('26','3'); sort($num3,SORT_STRING); foreach ($num3 as $mychrs) echo $mychrs." "; ?>

SORT_NUMERIC和SORT_STRING用來聲明按數字或字元的升序排列。如果按照數字升序排列是:3,26;但如果按照字元升序排列則是:26,3了。PHP中除了升序函數以外,還有降序或稱反向排列的函數,就是rsort()函數,比如:$num1=range(1,9);rsort($num1);這裡其實就相當於range(9,1)。

閱完此文相信大家對PHP數組排序有了一個更加清晰的思路,也掌握了多種不一樣數組排序的方法,大家要學以致用哦。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.