當前位置:才華齋>計算機>php語言>

PHP 陣列排序方法總結

php語言 閱讀(9.15K)

文章詳細的介紹了快速建立陣列的函式range()和常見PHP陣列排序的方法,希望對大家有幫助。

PHP 陣列排序方法總結

隨著PHP的快速發展,用它的人越來越多,在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 "

";

sort($a,SORT_STRING);

for ($i=0; $i<6; ++$i){

echo $a[$i]." ";

}

echo "

";

?>

輸出結果:

-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

";

asort($a);

foreach($a as $key => $value){

echo "$key : $value

";

}

echo "

key sort

";

ksort($a);

foreach($a as $key => $value){

echo "$key : $value

";

}

?>

輸出結果:

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 "

---排序後---

";

foreach ($people as $mychrs)

echo $mychrs." ";

?>

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

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

程式碼如下:

<?php

echo "---按數字升序排序---

";

$num2=array('26','3',);

sort($num2,SORT_NUMERIC);

foreach ($num2 as $mychrs)

echo $mychrs." ";

echo "

---按字元升序排序---

";

$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)。