首頁 >後端開發 >php教程 >PHP 陣列排序方法總結

PHP 陣列排序方法總結

小云云
小云云原創
2017-11-14 10:29:582372瀏覽

現如今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 />"; 
} 
?>

輸出結果: 


程式碼如下:

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

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

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

快速建立陣列的函數range() 

例如range()函數可以快速建立從1到9的數字陣列: 


#程式碼如下:

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

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


程式碼如下:

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

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


程式碼如下:

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

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

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

程式碼如下:

rrreee

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

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

相關推薦:

php陣列的定義

#PHP陣列最完整介紹

## #對PHP陣列使用方法的總和#######

以上是PHP 陣列排序方法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn