陣列
陣列可以存入多個不同類型的數(shù)據(jù),是複合資料型別。
我們可以使用array()來初始化數(shù)組,每個數(shù)組元素之間使用逗號分隔?
在PHP5.4版本之後,數(shù)組的初始化更為簡潔,用中括號 [] 來初始化
我們來建立一個簡單的陣列:
<?php header("Content-type:text/html;charset=utf-8"); //設(shè)置編碼 $array=array(100,1.34,true,"PHP中文網(wǎng)",); echo '<pre>'; var_dump($array); echo '<pre/>'; ?>
在上例中,我們發(fā)現(xiàn)我們存入了:
1.??? 整數(shù)
2.??? 浮點
3.??? 布林
#4.??? 字串
註#:上例中echo pre這個標(biāo)籤的主要目的是為原樣輸出,格式顯示的更好看,更清晰。
我們對程式運作的結(jié)果來看看:
1.??? array(size = 4) 說明裡面有4個元素
2. 0 => int 100我們知道int是整數(shù)的意思,100是整數(shù)的數(shù)值。那前面的0,1,2,3和=>代表什麼意思呢?
3.??? 最新前的0,1,2,3代表的是值的讀取識別號,我們稱為下標(biāo)或鍵(英文:key)
4.??? = > 是一個符號標(biāo)準(zhǔn)叫法叫作:鍵值對應(yīng)符。因此,以後再看到 0=> int 1 可以這樣來說。 下標(biāo)訪問符0對應(yīng)整型的1。
5.??? 我們也稱數(shù)組裡面的鍵值對為元素,而元素就是鍵值對的組合。
透過上例,我們就完成了數(shù)組其中的一種宣告方式:索引數(shù)組的宣告。所謂索引數(shù)組:就是下標(biāo)全為整數(shù)的數(shù)組。
小知識
#索引數(shù)組的下標(biāo)必須從0開始嗎?
答:這個問題其實不然,索引陣列不一定要從0開始。
那如何能夠不從0開始呢?
答:需要用到大家在上面學(xué)的一小塊知識喲。就是鍵值對應(yīng)符。如下
<?php header("Content-type:text/html;charset=utf-8"); //設(shè)置編碼 $kele = array(5=>'只有不斷努力才能博得未來',10 => 'php.cn', 'PHP中文網(wǎng)' ,'好好學(xué)習(xí)哦', 19 => '去PHP中文網(wǎng)學(xué)習(xí)PHP'); //打印顯示$kele echo '<pre>'; var_dump($kele); echo '</pre>'; ?>
透過上面的例子可以看出,我們的索引數(shù)組下標(biāo)是從5開始的哦
我們來總結(jié)規(guī)律:
??? 索引數(shù)組若不強制聲明他的下標(biāo),他的下標(biāo)是從0開始的。 (我們的第一個陣列的值:只有不斷努力才能博得未來。這個值的下標(biāo)為0)。
2.??? 如果我指定過下標(biāo)他的下標(biāo)就為我指定的值。如下標(biāo)為5,10和下標(biāo)為19的,都是我指定過的值。
3.??? 若某個值(如php.cn),強制指定了下標(biāo)(下標(biāo)為10)。在它後面加上的值(PHP學(xué)院),不指定下標(biāo)的話。他們的下標(biāo)增
長法則為最大值+1。
關(guān)聯(lián)陣列
索引陣列適當(dāng)?shù)淖円幌滦尉统霈F(xiàn)了關(guān)聯(lián)數(shù)組。只要數(shù)組裡面有一個為字串的數(shù)組,就為關(guān)聯(lián)數(shù)組。
那我們來宣告關(guān)聯(lián)數(shù)組。跟索引數(shù)組的聲明方式完成一樣。不過不同的是,必須要指定字串的下標(biāo)和必須要使用鍵值對應(yīng)符。
實例
<?php $arr=[ //用[]創(chuàng)建數(shù)組 'name'=>'Tom', 'age'=>'18', 'gender'=>'male' ]; echo "<pre>"; var_dump($arr) ; echo"</pre>" ?>
#我們透過實驗知道:
1 .??? 宣告關(guān)聯(lián)陣列是鍵名=> 值
2.??? 在關(guān)聯(lián)陣列中可以有索引陣列的元素
##陣列是我們最常使用到的類型,那麼如何計算某個一維數(shù)組的個數(shù)呢。其實我們可以用到我們之前學(xué)過的數(shù)學(xué)函數(shù)裡面的一個:
count()。
count($變數(shù)) 函數(shù)用來傳回陣列的長度(元素數(shù)):
實例#
<?php $name=Array('tom','andy','jack'); echo count($name); ?>
用for迴圈遍歷索引數(shù)組
實例
<?php $arr=Array('tom','andy','jack'); $arrlength=count($arr); for($x=0;$x<$arrlength;$x++){ echo $arr[$x]; echo "<br/>"; } ?>
#透過上面的例子,我們就把陣列做了循環(huán)。
因為下標(biāo)是從0開始的,定義$i=0 。每次循環(huán)的時候讓$i 加1 ,但是必須要小於3,因為陣列下標(biāo)的最大值為2。
那麼問題來了:
那關(guān)聯(lián)數(shù)組怎麼辦? 如果索引數(shù)組的下標(biāo)不連續(xù)怎麼辦? 這就要用到我們下面所學(xué)的知識了。foreach的基本語法
有一個布林型迴圈是專門用來循環(huán)陣列的。這個迴圈的基本語法就是foreach基本語法
foreach( 要循環(huán)的陣列變數(shù)as [鍵變數(shù)=>] 值變數(shù)){
??? //循環(huán)的內(nèi)容
#}
這是固定用法,要循環(huán)的陣列放進去。
as 是一個固定的關(guān)鍵字
後面的鍵變數(shù)是可選的,隨意定義一個變量,每次循環(huán)的時候,foreach這個語法會把鍵取出來賦值到鍵變數(shù)裡面
後面的值變數(shù)是必填的。每次循環(huán)的時候,會把值放到值變數(shù)裡面。
我們下面用程式碼來舉例子,加強對這個文法的理解。
實例
?php $arr=[ 'name'=>'Tom', 'age'=>'18', 'gender'=>'male' ]; foreach($arr as $key=>$value){ echo $key.": ".$value."<br />"; }; ?>
透過上面的運行結(jié)果我們得到下面的結(jié)果:
1.??? 每次循環(huán)的時候,下標(biāo)賦值給了變數(shù)$key,把值的變數(shù)賦值給了變數(shù)$value
2.??? 循環(huán)一次讀一次鍵和值。讀到最後,發(fā)現(xiàn)沒有可以讀取的陣列元素後,停止循環(huán)遍歷資料。
注意:$key 和$value並不是變數(shù)名必須得為這兩個名字。你命名為其他的也可以,如 $kai => $wen是一樣的。 你要清楚鍵賦值
給了哪個變量,值賦值給了另外的哪個變數(shù)。
透過foreach遍歷連續(xù)的索引數(shù)組,如下例:
<?php header("Content-type:text/html;charset=utf-8"); //設(shè)置編碼 $data = array( 0 => '中國', 100 => '美國', 20 => '韓國', 300 => '德國', ); foreach($data as $k => $v){ echo $k . '------' . $v .'<br />'; } ?>
依照foreach的結(jié)果推理與剛剛做的關(guān)聯(lián)數(shù)組的結(jié)果是一樣的。
不同的是不連續(xù)的索引數(shù)組。每讀一次數(shù)組的元素,將當(dāng)次循環(huán)的下標(biāo)賦值給了變數(shù)$k,值賦值給了變數(shù)$v。每讀將鍵和值輸
出,然後顯示出來。循環(huán)一次向後移動一次下標(biāo)。讀取至最後,退出執(zhí)行。
多維數(shù)組
我們將在PHP 高階教程中講解多維數(shù)組。
完整的 PHP 陣列參考手冊
#如需完整的陣列函數(shù)參考手冊,請造訪我們的?PHP 陣列參考手冊。
此參考手冊包含每個函數(shù)的簡要描述、使用範(fàn)例。