數組基礎
Php中,數組的下標可以是整數,也可以是字符串
Php中,數組的元素順序不是由下標決定的,而是由其“加入”的順序決定。
定義:
array(1,5,1.1,”abc”,true,false); //可以存儲任何數據,此時爲“默認下標”
array(2=>1,5 =>5,7 =>1.1, 3=>”abc”, 0=>true); //下標可以任意設定(無需順序,無需連續)
l 可以加下標,也可以不加(默認下標),默認下標規則:前面已經用過的最大數字下標+1。
l 可以是數字下標與字符串下標的混合形式,同樣遵循默認下標規則
l 負數下標不算在整數下標中,只當作字符下標
l 浮點數下標自動轉換爲整數,且直接抹掉小數
l 純數字字符串下標,當作數字看待
l 布爾值當下標,則true爲1,false爲0
l 如果下標跟前面的重複,則單純覆蓋前面同名下標的值
其他形式:
$arr1[ ]=1.1;//直接在變量後面使用[],就成爲數組,並依次賦值,與array的語法結構一致
取值:通過下標
賦值(同定義)
數組分類
從鍵值關係:
關聯數組:通常指下標爲字符串,並且該字符串大體可以表示出數據的含義的數組
例:$person=array(
“name”=>”小明”;
“age”=>15;
)
索引數組:指一個數組的下標是從0開始的連續的數字下標—跟js數組一樣
從數組層次來分:
一維數組
二維數組
多維數組
一般語法形式:$v1=數組名[下標][下標]…
數組遍歷
遍歷基本語法
foreach($arr as [$key=>]$value){
//對$key(元素下標)和$value(元素值)進行操作
//此循環結構從數組的第一項一直遍歷循環到最後一項,然後結束
}
數組指針和遍歷原理
每一個數組,其內部都有一個指針,該指針指向數組某元素時,取到該元素
foreach遍歷過程中,依賴指針進行。
其他函數也依賴於該指針:
$v1=current($arr1);//取得$arr1中當前指針所指向的元素的值,如果沒有指向元素,則爲false
$v1=key($arr1);//取得$arr1中當前指針所指向的元素的下標,如果沒有指向元素,則爲false
$v1=next($arr1);//將指針移向“下一個元素”,然後取得該下一個元素的值
$v1=prev($arr1);//將指針移向“上一個元素”,然後取得該上一個元素的值
$v1=reset($arr1);//將指針移向“第一個元素”,然後取得該元素的值(數組初始化)
$v1=end($arr1);//將指針移向“最後一個元素”,然後取得該元素的值
$v1=each($arr1);//取得當前元素的下標和值,然後移動到下一個位置
For+next+reset遍歷數組
reset($arr1);
$len=count($arr1);
for($i=0;$i<$len;$i++){
$key=key($arr1);
$value=current($arr1);
//對變量進行操作
next($arr1);
}
While+each+list遍歷數組
Each()函數:取得當前元素的下標和值,再放入到一個新的數組中,然後移動到下一個位置
該新的數組,有4個元素,存儲了下標和值各兩個:
Array{
1=>(取出來的值)
‘value’=> (取出來的值)
0=> (取出來的下標—鍵名)
‘key’=> (取出來的下標—鍵名)
};
List()函數:
使用形式
list($v1,$v2,$v3,$v4…)=數組$arr1;
作用:依次取得數組中下標爲0,1,2,3,。。。的元素的值,並一次性放入多個變量中(一一對應)
相當於如下語句:
$v1=$arr1[0];
$v2=$arr1[1];
$v3=$arr1[2];
注意:只能實現從0開始的連續數字下標的元素的取值(數組元素的順序不要求)
然後使用兩個函數與while實現數組遍歷:
形式:
reset($arr1);
while(list($key,$value)=each($arr1))//從數組中依次取元素,當each到數組最後時,返回//false,循環結束
{
//對元素進行操作
}
Foreach遍歷細節探討
1.可以有break和continue
2.默認是值傳遞(值變量)
3.可設定爲引用傳遞(值變量),鍵變量不可設爲引用傳遞
Foreach($arr as $key=>&$value){…}
4.Foreach默認是原數組上進行遍歷,但如果在遍歷過程中對數組進行了某種修改或某種指針性操作,則會在複製的數組上繼續遍歷循環。
5.Foreach中如果指變量是引用傳遞,則無論如何都在原數組上進行