數(shù)組奥帘,是PHP基礎數(shù)據(jù)類型中的一種。
//目前的主要定義數(shù)組的方法
$arr = ['a'=>1, 'b'=>1];
//php 5.4以前
$arr = array('a'=>1,'b'=>2);
- 從字面理解就是:一組數(shù)據(jù)萨蚕。也就是說,這個數(shù)據(jù)類型中包含了“多個子數(shù)據(jù)”.這個不難理解涉馁,但至關重要门岔。
- 我們對數(shù)組的常見操作是:增刪改查(這四個字基本涵蓋了我們對數(shù)據(jù)的所有操作,不僅僅是數(shù)組)只要理解了數(shù)組是“一組數(shù)據(jù)”的概念之后烤送,增刪改查自然也不難理解寒随。就是對這組數(shù)據(jù)的添加、修改帮坚、刪除妻往、取出等行為。
key & value
- 數(shù)組中包含“一組數(shù)據(jù)”试和,每個數(shù)據(jù)都有一個編號讯泣,這個編號就是 key。數(shù)據(jù)本身阅悍,就是 value好渠。
- 在PHP中,方括號([])就是用來操作數(shù)組的节视,增改查拳锚,都是“[key]”,所以你只要看到 [ ] 就可以認為這個變量的數(shù)據(jù)類型是數(shù)組(偶有特殊情況寻行,比如字符串也可以用 []霍掺,但是極為少見)
- 第二個認知, “=>”該語法拌蜘,僅用在數(shù)組的相關操作上杆烁, 左邊一定是 key 右邊一定是 value。
常見于:
foreach( \$data as \$key=>$value )
或者:
['a'=>1, 'b'=>2]
很多同學學的時候感覺都會简卧,用的時候感覺很懵兔魂,那是因為實際環(huán)境總是要復雜點.所以,這種基礎認知举娩,可以幫助你在復雜的代碼中入热,認清哪些是數(shù)組。
And
比如: $a['key'] 你知道是數(shù)組晓铆,但是你知道嗎概说,x()['key'] 這樣的語法也可以决左。只要 x() 函數(shù)的返回值是數(shù)組虽另,就可以這樣操作(php5.x以后才支持)
你有了基礎認知谤职,你就能知道腔召,既然使用了 [] 的語法拾给,那么 x() 函數(shù)的返回值一定是數(shù)組
function x(){
return [1,2,3];
}
echo x()[1];
對數(shù)組有了基礎認知之后请祖,我們可以思考一下:哪些場景非數(shù)組不可馒疹?
沒有數(shù)組,能不能編程滔韵?
思考
最常見的需求:我們從數(shù)據(jù)庫中取出的“數(shù)據(jù)量”是隨機的逻谦,可能是3條,可能是500條陪蜻。
如果每條數(shù)據(jù)都指定一個變量名邦马,那就尷尬了。500條數(shù)據(jù)要定義500個變量宴卖。
所以滋将,這時候數(shù)組的意義就很重大,一個數(shù)組類型的變量症昏,可以容納所有的數(shù)據(jù)随闽,不管是500還是5000
上文還說到了,數(shù)組中有很多 key=>value肝谭,其中掘宪,key 作為數(shù)據(jù)編號的存在,是不允許重復的攘烛。
value 則比較寬泛魏滚,不僅可以重復,還可以是“任何數(shù)據(jù)類型”医寿,注意:任何數(shù)據(jù)類型
也就是說栏赴,value 也可以是數(shù)組,這就形成了二維數(shù)組靖秩。
$arr = [
'a'=>1;
'b'=>2;
'c'=>[1,2,3];
]
多維數(shù)組在操作數(shù)據(jù)增刪改查時须眷,和1維數(shù)組沒有大的區(qū)別,只不過方括號([])多了一點沟突。
//輸出a的值
echo $arr['a'];
//輸出c的子數(shù)組的值
echo $arr['c'][0];
循環(huán)
除了上面的基礎知識之外花颗,我們對數(shù)組最常見的需求,莫過于:循環(huán)(專業(yè)稱呼叫遍歷)
也就是逐一的訪問數(shù)組中的鍵值對惠拭,并做一些操作扩劝;比如將數(shù)組中,所有的value 都顯示在網(wǎng)頁上职辅。
我們可以用 foreach/for/while 來循環(huán)它棒呛,最常用的是 foreach 語法
foreach($arr as $key => $value){
echo $value;
}
這樣,就可以將數(shù)組中所有的值域携,都顯示在網(wǎng)頁上(如果是多維數(shù)組簇秒,就需要多層foreach嵌套)