1、什麼是數組
數組就是一組數據的集合,把一系列數據組織起來,造成一個可操做的總體。數組的每一個實體都包含兩項:鍵和值。php
2、聲明數據
在PHP中聲明數組的方式主要有兩種:一是應用array()函數聲明數組,一是直接爲數組元素賦值。
<1>array()函數聲明的數組的方式array([mixed...]) 參數mixed的語法爲key=>value
如,chrome
<?php $array=array("1"=>"編","2"=>"程","3"=>"詞","4"=>"典"); print_r($array); echo "<br>"; echo $array[1]; //注意:下標默認是從0開始 echo $array[2]; echo $array[3]; echo $array[4]; ?>
<2>直接爲數組元素賦值。若是在建立數組時不知所建立數組的大小,或在實際編寫程序時數組的大小可能發生變化,採用這種數組建立的方法較好。
如,數據庫
<?php $array[1]="I"; $array[2]="love"; $array[3]="PHP"; print_r($array); //輸出所建立數組的結構 ?>
3、數組的類型
PHP支持兩種數組:索引數組(indexed array)和聯合數組(associative array),前者使用數字做爲鍵,後者使用字符串做爲鍵。express
4、輸出數組
在PHP中對數組元素輸出,能夠經過echo和print語句來實現,但這隻能對數組中某一元素進行輸出;要將數組結構輸出則要使用print_r()函 數,其語法:print_r(mixed expression),參數expression爲普通的整形、字符型或實型變量則輸出該變量自己,若是該參數爲數組,則按必定鍵值和元素的順序顯示出 該數組中的全部元素。編程
5、數組的構造
一維數組:
當一個數組的元素是變量時,則稱其爲一維數組。
聲明一位數組: 類型說明符 數組名[常量表達式];
二維數組:
當一個數組的元素是一個一位數組時,則稱之爲二維數組。
如,數組
<?php $str = array ( "網絡編程語言"=>array ("PHP","JSP","ASP"), "體育項目"=>array ("m"=>"足球","n"=>"籃球")); print_r ( $str) ; ?>
6、遍歷數組
遍歷數組中的全部元素是經常使用的一種操做,在遍歷的過程當中能夠完成查詢或其餘功能。在PHP中遍歷數組的方法有多種,下面介紹最經常使用的兩種方法。
<1>使用foreach結構遍歷數組;網絡
foreach能夠說是php語言單獨爲遍歷數組提供的一種方法(其餘語言也可能有),這種遍歷方法是php遍歷數組的首選
foreach遍歷時能夠是這樣的foreach($array as $key=>$value)包含鍵值元素 也能夠是foreach($array as $value)只包含值
<2>使用list()函數遍歷數組,jsp
list()函數僅能用於數字索引的數組,且數字索引從0開始。list()函數是將數組中的值賦給變量
標準語法:void list ( mixed varname, mixed ... )
用list實現對數組的遍歷代碼
例:綜合使用list()和each()認證用戶登陸:編程語言
<?php //輸出用戶登陸信息 while(list($name,$value)=each($_POST)){ if($name!="submit"){ echo "$name=$value<br>"; } } ?>
注意:
a list函數所接受的數組只能是索引數組,不能是關聯數組!若是是關聯數組,則會出現相似 Notice Undefined offset提示
b 若是隻是部分取出數組的值,只需 按照這樣的寫法便可,list(,,$chrome,)=$arrGoogle;這樣咱們就能夠去除chrome的信息,可是注意必定要保證list參數與數組的元素個數相同(所取值前面的個數)
c list函數賦值按索引順序賦值函數
<3>for循環
for循環是幾乎全部語言均可以用的一種遍歷數組的方式,可是在php語言中for循環不是遍歷數組的首選
/* Designed By Androidyue php中數組的遍歷講解*/ //for 循環遍歷數組 //聲明一個數組而且初始化 $array=array('Google','Chrome','Android','Youtube','Gmail'); //使用for循環遍歷各數組元素,count()用來計算數組的長度 for($i=0;$i //打印數組的元素的值 echo $array[$i]," "; } ?>
4.each函數遍歷數組
each函數返回輸入數組的鍵值對
標準語法:array each(array input array)
返回值:返回4個值0,1,key,value;其中0和key包含鍵名,而1和value包含相應的數據
//使用each函數遍歷數組 $arrGoogle=array('google','Gmail','Chrome','Android'); //第一次使用each取得當前鍵值對,而且將指針移到下一個位置 $arrG=each($arrGoogle); //打印結果,而且換行以清晰顯示結果 print_r($arrG); print ' '; $arrGmail=each($arrGoogle); print_r($arrGmail); print ' '; $arrChrome=each($arrGoogle); print_r($arrChrome); print ' '; $arrAndroid=each($arrGoogle); print_r($arrAndroid); print ' '; //當指針位於數組末尾再次執行函數each,若是是這樣再次執行結果返回false $empty=each($arrGoogle); //若是指針沒法繼續後移返回false if($empty==false){ print '指針以位於數組末尾,沒法在向後移,故返回false'; } ?>
注意:該函數的參數和返回值(在執行該函數前指針不位於數組末尾時)都爲數組,在執行函數前數組指針位於數組末尾時再次執行該函數返回值爲false
開始的位置是第一個元素,每(正常)執行一次該函數,指針向後移到下一個地址
5.key()遍歷數組
each是用來返回數組的鍵名
基本語法:mixed key ( array &array )
/Designed By Androidyue //使用key函數遍歷數組 //初始化一個關聯數組 $arrChina=array('a'=>'Hebei','b'=>'Anhui','c'=>'Beijing','d'=>'Guangdong','e'=>'Shanghai'); //初始化一個索引數組 可是索引數組使用key返回的是空字符產 $arrCN=array('Hebei','Anhui','Beijing','Guangdong','Shanghai');//key顯示的是數組的字符串下標,若是爲索引數組則爲空字符串 //print_r($arrChina); while($key=key($arrChina)){//對於關聯數組使用key方法能夠執行 echo $key,' '; next($arrChina); } print_r($arrCN);//輸出一下索引數組 while($keyName=key($arrCN)){//這裏調用key函數賦值後爲false,while條件不成立,不進行{}之間的操做 /*if(empty($keyName)){ print '該鍵名爲空 '; }*/ /*if($keyName=''){ print '該鍵名爲空 '; }*/ var_dump($keyName); } //驗證對索引數組使用key函數的返回值賦值給變量這個表達式的布爾值 if(($KeyName=key($arrCN))==false){ print 'False'; } //對索引數組調用key函數對變量賦值 $keyName=key($arrCN); next($arrCN);//將數組指針向後移動一位 next($arrCN); next($arrCN); next($arrCN); next($arrCN); $keyName=key($arrCN); var_dump($keyName);//輸出值和類型類型信息 //echo $keyName; ?>
注意:key函數的參數通常爲關聯數組,若是爲索引數組那麼就沒有什麼意義了
key函數不會推動指針移動,這裏咱們調用了next函數,next函數用來推動指針向後移動,下面就是next函數的介紹
6.使用對指針進行操做的函數遍歷數組
a reset函數 用於將指針設置回數組的初始位置,若是須要在一個腳本中屢次查看和處理一個數組,就可使用這個函數,另外這個函數還經常使用於排序的結束
b.current() 函數
返回當前當前數組指針位置的值,該函數不對指針進行移動操做,須要注意這個特色
c end 將指針移到數組的最後位置,返回目標位置的值
d next 將指針向後移動一次並返回目標位置的數組值,若是當前位置爲數組的最後位置,返回false
e prev 將指針向前移動一次,並返回目標位置的數組值,若是當前位置是數組起始位置,則返回false
其它:
current($sttr); //取得當前元素的value值
//Designed By Androidyue //reset方法的使用 注意如下代碼調用了控制指針的函數,移動指針的操做會影響到each函數的結果 //初始化一個數組,爲了簡寫代碼,聲明一個簡單的數組 $arrGoogle=array('google','Gmail'); //調用each函數,而且輸出返回數組 換行 echo(current($arrGoogle));//使用current函數,打印出當前的值 echo (next($arrGoogle));//調用next函數,打印下一個的值 $arrG=each($arrGoogle); print_r($arrG); print ' '; $arrGmail=each($arrGoogle); print_r($arrGmail); print ' '; $arrMore=each($arrGoogle);//當指針沒法繼續移動時返回false //print_r($arrMore); //echo $arrMore; print ' '; //可是若是想繼續輸出使用重複上面的過程,那麼使用reset函數將指針重置爲開始位置,而後重複上面的的操做 reset($arrGoogle); echo(end($arrGoogle));//調用end函數將指針移到數組最後一個位置,並返回值 echo(prev($arrGoogle));//調用prev函數將指針向前移動,並返回值 $arrG=each($arrGoogle); print_r($arrG); print ' '; $arrGmail=each($arrGoogle); print_r($arrGmail); print ' '; ?>
7、統計數組元素個數
在PHP中,使用count()函數對數組中的元素個數進行統計,語法爲:int coun(mixed array[,int mode]),其中參數array爲必要參數,mode爲可選參數,若選中COUNT——RECURSIVE(或1),本函數將遞歸地對數組數組。如,
<?php $array = array("php" => array("PHP函數參考大全","PHP程序開發範例寶典","PHP數據庫系統開發徹底手冊"), "asp" => array("ASP經驗技巧寶典") ); //聲明一個二維數組 echo count($array,COUNT_RECURSIVE);//遞歸統計數組元素的個數,運行結果爲6 ?>
8、數組排序
<1>使用sort()和rsort()分別對數組進行升序和降序,如,
<?php $array=array(5,26,37,18,9,42,88,66); $array1=sort($array); for($i=0;$i<count($array);$i++){ echo $array[$i]." "; } echo "<br>"; $array1=rsort($array); for($i=0;$i<count($array);$i++){ echo $array[$i]."  "; } ?>
運行結果:
5 9 18 26 37 42 66 88
88 66 42 37 26 18 9 5
<2>使用ksort()和asort()對關聯數組排序
若是使用了相關數組,在排序後還要保持關鍵字和值的排序一致,這是就須要使用ksort()和asort()函
數,如,
<?php $array=array('php'=>1,'jsp'=>2,'asp'=>3); ksort($array); print_r($array); echo "<br>"; asort($array); print_r($array); ?>
運行結果:
Array ( [asp] => 3 [jsp] => 2 [php] => 1 )
Array ( [php] => 1 [jsp] => 2 [asp] => 3 )
九 經常使用數組函數