現在說數組
php數組有3種類型
數值數組帶有數字ID 鍵的數組
關聯數組數組中的每個ID 鍵關聯一個值
多維數組包含一個或多個數組的數組
組
組的聲明
<?php $a[5]; $a[5]={1,2,3,4,5}; ?>
像C語言這種常規的2種在php裡是行不通的
php有個關鍵字array 是用來定義數組的
<?php $a=array(); ?>
這就是定義了一個空數組,不需要指定長度,裡面元素可以動態添加,添加了多少個,這個數組就有多少大,而且可以繼續添加,這點很爽哈
<?php $a=array(); echo $a; ?>
這樣可以打印a的類型結果是Array
但是這樣的話就會報錯
<?php $a=array(); echo $a[0]; ?>
因為數組是空的
定義數組主要有兩種方法,一種是用array
<?php $a=array(1,2,3,4,5); for($i=0;$i<count($a);$i++) echo $a[$i]."<br/>"; ?>
count關鍵字可以計算一個數組有多少個元素
還有一種
還有一種
<?php $a[0]='a'; $a[1]='b'; $a[2]='c'; for($i=0;$i<count($a);$i++) echo $a[$i]."<br/>"; ?>
直接給變數下標賦值,這個變數就自動成為數組了
但是一定要按下標順序賦值
比如,這樣就是錯的
<?php $a[0]='a'; $a[1]='b'; $a[2]='c'; $a[5]='d'; for($i=0;$i<count($a);$i++) echo $a[$i]."<br/>"; ?>
還有數組裡的元素可以不是同一型別
<?php $a=array(1,'b',"hello",1.0); for($i=0;$i<count($a);$i++) echo $a[$i]."<br/>"; ?>
還有數組裡的元素可以不是同一類型
reee
是不是覺得很強
現在說關聯數組
這就是一種鍵對值的關係,跟java的map**很類似
<?php $a=array("a"=>1,'b'=>2,"c"=>3); echo $a["a"]."<br/>"; echo $a['b']."<br/>"; echo $a["c"]."<br/>"; ?>
鍵=>值鍵可以重複但是結果是顯示最後那個
<?php $a=array("a"=>1,'a'=>2,"c"=>3); echo $a["a"]."<br/>"; echo $a["c"]."<br/>"; ?>
還有一個關聯數組的定義,就是上面說過的
<?php $a["a"]="hello"; $a["b"]="world"; echo $a["a"]."<br/>"; echo $a["b"]."<br/>"; ?>
但是下面這樣是錯誤的
<?php $a["a"]=>"hello"; $a["b"]=>"world"; echo $a["a"]."<br/>"; echo $a["b"]."<br/>"; ?>
另外數字也可以作為鍵
<?php $a["1"]="hello"; $a["2"]="world"; echo $a["1"]."<br/>"; echo $a["2"]."<br/>"; ?>
php有提示注意,這個不要用
<?php $a['a']="hello"; $a['b']="world"; echo $a[a]."<br/>"; echo $a [ b ]"; ?>
這就是定義了一個多維數組,二維的
<?php $a=array(array('a',1,2),array("hello",3,1.1,)); echo $a[0][0]; ?>
而且還可以這樣
<?php $a=array(array('a',1,2),array("hello",3,1.1,2,'a')); echo $a[0][0]; ?>
和普通數組一樣,多維數組也可以這樣定義,不過我想沒人會這樣做。 。
<?php $a[0][0]="hello00"; $a[0][1]="hello01"; $a[0][2]="hello02"; $a[0][3]="hello03"; $a[1][0]="hello10"; $a[1][1]="hello11"; $a[1][2]="hello12"; $a[1][3]="hello13"; for($i=0;$i<2;$i++){ for($j=0;$j<4;$j++) echo $a[$i][$j]." "; echo "<br/>"; } ?>
<?php $a=array('a'=>array('a'=>"hello",'b'=>"world"),'b'=>array('one'=>1,'two'=>2,'three'=>3)); echo $a['a']['a']; ?>
也可以不用這樣,像下面這樣就清楚地打印出許多
<?php $a=array('a'=>array("hello","world"),'b'=>array(1,2,3)); echo $a['a'][0]."<br/>".$a['b'][2]; ?>
絕對不能這樣玩
hello 3
錯誤的
前面說的都是二維數組,那麼三維或以上的怎麼定義,很簡單
<?php $a=array(array('a'=>"hello",'b'=>"world"),array('one'=>1,'two'=>2,'three'=>3)); echo $a['a']; ?>
應該有人看著會暈
現在分析一下
比如$a[0][1][1]; 最右邊括號中括號的元素在數組裡表示最裡面的
最大分了3層,最右邊中括號的元素就表示最裡面的那層
然後往左的中括號就往外一層,以此類推
其實多看看就明白了,分的幾層就是幾維數組
另外3維數組也不需要了解太透,一般掌握到二維就可以了
前面沒詳說foreach循環,其實用foreach迴圈遍歷一維數組最好了
<?php $a=array(array(array(1,2,3))); echo $a[0][0][0]; ?>
<?php $a=array(array(array(1,2,3)),array(array(4,5,6))); echo $a[1][0][0]; ?>
<?php $a=array(array(array(1,2,3),array(4,5,6)),array(array(7,8,9))); echo $a[0][1][1]; ?>
<?php $a=array(1,"hello",'a'); foreach($a as $value) echo $value."<br/>"; ?>