在PHP數組學習摘錄部分瞭解到最基本的PHP數組的建立和數組元素的顯示。需要深入學習下PHP數組的相關操作。首先接觸的就是數組元素的升序、降序的排序問題。
1,快速建立數組的函數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
2,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 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)
3,PHP中關聯陣列的排序
PHP除了支援數字索引數組以外,還支援相關數組。比如如下數組就是一個
相關(關聯)數組:
$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');
|
使用sort($peoples)預設即是按照元素定義值的升序排序,在關聯陣列中可使用asort()函數表示,關聯陣列中最主要的則是可按照關鍵字(如xm、xb、mz等)的升序排序,該方法是用函數ksort()函數。
<?php $peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth'); foreach ($peoples as $mychrs) echo $mychrs." ";
echo "<br />--按元素值升序排列--<br />"; asort($peoples); foreach ($peoples as $mychrs) echo $mychrs." ";
echo "<br />--按關鍵字升序排列--<br />"; ksort($peoples); foreach ($peoples as $mychrs) echo $mychrs." "; ?>
|
和常規數組擁有sort()升序函數的反向排序rsort()降序函數相對應的,關聯陣列也有對應的降序函數:asort()函數和arsort()函數、ksort()函數和krsort()函數。
記憶:原型函數是sort(),其中a、k表示關聯陣列相關必須前置,反向排序使用r修飾。
4,PHP數組元素隨機排序
PHP中使用
shuffle()函數將數組元素進行隨機的重新排序,比如:
<?php $fer=array('cnbruce','cnrose','cnjames','cnanne'); shuffle($fer);
foreach ($fer as $mychrs) echo $mychrs." "; ?>
|
每次都會顯示不同的排序組合
5,PHP數組按原順序反向排序
PHP中可使用
array_reverse()函數將數組元素按原順序反向排序。比如:
<?php $fer=array('cnbruce','cnrose','cnjames','cnanne'); foreach ($fer as $mychrs) echo $mychrs." ";
$fer=array_reverse($fer); echo "<br />--按原順序反向--<br />"; foreach ($fer as $mychrs) echo $mychrs." "; ?>
|
cnbruce cnrose cnjames cnanne
--按原順序反向--
cnanne cnjames cnrose cnbruce
注意這裡的
$fer=array_reverse($fer); 在此之前的任何排序函數均只是聲明引用,並沒有對原有數組進行重新定義,但當我調試該函數時則需要重新定義。這是因為array_reverse()是返回原數組修改後的副本,如果不需要原有數組,可對原數組重新定義達到覆蓋的目的,否則就另外定義數組儲存副本,比如:$fer_bak=array_reverse($fer);