標籤:php
一.PHP數組的分類
按照下標的不同,PHP中的數組分為關聯陣列和索引數組:
索引數組:下標從0開始,依次增長。
$arr=[1,2,3,4,5];
關聯陣列:下標為字串格式,每個下標字串與數組的值一一關聯對應。(有點像對象的索引值對)
1 |
$arr=["a"=>1;"b"=>2;"c"=>3]; |
註:[]聲明在5.4版本之後才能使用。
二.關於關聯陣列和索引數組
1、數組中,可以同時存在索引數組和關聯陣列
array(1,2,3,"four"=>4);
2、數組中,所有的索引數組,如果不加指定,會去掉關聯項,預設增長(即關聯陣列不佔索引位)
array(1,2,3,"four"=>4,5,6);
1,2,3,5,6的索引分別為0 1 2 3 4。
3、如果關聯陣列的key,是純十進位整數字串,則會將此數字轉為索引數組的索引值
array(1,2,3,"9"=>4);
1 2 3 4 的索引分別為 0 1 2 9。
4、如果手動指定關聯陣列的key,索引數組的下標,如果與前面已有的key或下標重複,則後指定的值會覆蓋之前的值
array(1,2,"one"=>5,"one"=>6)
列印數組為 1 2 "one"=>6。
5、如果手動指定索引數組下標,則後續自增長下標,會按照之前下標最大值,依次增長
array(1,2,3,"9"=>4,5);
1 2 3 4 5 的索引分別為 0 1 2 9 10。
三.數組的遍曆
1、使用for迴圈遍曆數組
count($arr);用於統計數組元素的個數
for迴圈只能用於遍曆純索引數組
如果存在關聯陣列,count統計時,會統計兩種數組的總個數,使用for迴圈遍曆混合數組,將導致數組越界!
$arr=[1,2,3,4,5];for($i=0;$i<count($arr);$i++){ echo $arr[$i];}
2、foreach迴圈遍曆數組(最常用的方法)
foreach可以遍曆任何類型的數組,案例如下:
$arr=[1,2,"one"=>5,"one"=>6];foreach($arr as $key=>$value){ echo "這是key:{$key}"; echo "這是value:{$value}";}
3.使用list() each() while遍曆數組
list(); 用於將數組的每一個值,賦值給list函數的每一個參數。(list函數的參數,必須小於等於數組的元素個數)
注意:
list()在解析數組時,只解析索引數組,不能取出關聯項。
list()可以通過空參數,選擇性的解析數組的值;
each();用於返回數組當前指標所在位的索引值對,並將指標後移一位,
傳回值:一個數組。包含一個索引數組(0 鍵 1 值)和一個關聯陣列("key" 鍵 "value" 值)。
while(list($key,$value) = each($arr)){ echo "{$key} {$value}<br>";} reset($arr);
注意:數組使用each遍曆完一遍後,指標始終處於最後一位的下一位,即再用each,始終返回false,如果還需使用,需用reset()函數,重設數組指標。
4、使用數組指標遍曆數組
next():將數組指標後移一位,並返回後一位的值,沒有返回false。
prev():將數組指標前移一位,並返回前一位的值,沒有返回false。
end():將數組的指標直接移至最後一位,並返回最後一位的值,空數組返回false。
reset():重設數組指標,恢複至第一位,並返回第一位的值,空數組返回false。
key():返回當前指標所在位的鍵,如果數組為空白或指標指到最後,返回null。
current():返回當前指標所在位的值,如果數組為空白或指標指到最後,返回false。
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" style="margin:0px;padding:0px;border:none;" />
$arr=[1,2,false,3,4,5];while (true) { echo key($arr); echo"---"; echo current($arr)."<br>"; if(!next($arr)&&key($arr)===null) break; }}
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" style="margin:0px;padding:0px;border:none;" />
PHP數組簡介