1、建立數組
在程式設計語言中,數值和字串被稱為標量變數,一個標量變數只能表示一個單獨的數值或字串。比如,$ydtx=“移動通訊”中的變數$ydtx就是一個標量變數,而我們在實際使用中如何用一個變數來表示出多個數值或字串呢。比如,如何表示“通訊基礎”、“通訊裝置”、“測試最佳化”、“3G”、“LTE”等諸多字串呢。這時我們就需要用到數組,數組雖然複雜卻非常有用,它能夠讓一個變數承載更多的資訊。建立數組的方法是使用array()函數:
$ydtx = array (
1 => '通訊基礎',
2 => '通訊裝置',
3 => '測試最佳化',
4 => '3G',
5 => 'LTE'
);
一個數組中必須包含鍵(索引)和值,鍵和值組成一個元素,所以數組與標量變數的不同之處在於數組擁有多個元素。鍵由數值或字串組成,比如上面的1、2、3、4、5就是用數字表示的鍵(索引),“通訊基礎”、“通訊裝置”、“測試最佳化”、“3G”、“LTE”等就是這些鍵分別對應的值。鍵和值就構成數組的一個元素。print_r ()函數可以輸出數組。要輸出上面的數組可以這樣書寫(為了讓輸出結果的結構更清晰,可以使用<pre></pre>標籤):
<pre>
<?php
$ydtx = array (
1 => '通訊基礎',
2 => '通訊裝置',
3 => '測試最佳化',
4 => '3G',
5 => 'LTE'
);
print_r ($ydtx);
?>
</pre>
輸出結果參見圖1:
圖1
2、索引數組與關聯陣列
數組中的鍵為數值的數組被稱為索引數組,鍵為字串的數組被稱為關聯陣列。關聯陣列在其他程式設計語言中被稱為散列表(hash)。前面提到的數組$ydtx就是索引數組(因為鍵是用數值來表示的):
$ydtx = array (
1 => '通訊基礎',
2 => '通訊裝置',
3 => '測試最佳化',
4 => '3G',
5 => 'LTE'
);
有時我們為了讓數組中的值更有意義就需要將值對應的鍵用字串來表示,比如下面代碼中的鍵就是用更有意義的字串來描述“通訊基礎”這一課程中各章的名稱,這類數組就是關聯陣列:
$chapter = array (
'第一章' => '通訊系統概述',
'第二章' => '通訊協定',
'第三章' => '傳輸技術',
'第四章' => '調製方式'
);
下面是輸出以上兩種類型數組的代碼,這次我們用var_dump()函數來輸出數組,var_dump()函數比print_r()函數能夠輸出更詳細的數組資訊(能夠顯示數組中的元素數量以及每個字串值的長度):
<pre>
<?php
$ydtx = array (
1 => '通訊基礎',
2 => '通訊裝置',
3 => '測試最佳化',
4 => '3G',
5 => 'LTE'
);
var_dump ($ydtx);
$chapter = array (
'第一章' => '通訊系統概述',
'第二章' => '通訊協定',
'第三章' => '傳輸技術',
'第四章' => '調製方式'
);
var_dump ($chapter);
?>
</pre>
以上代碼的輸出結果參見圖2:
圖2
3、向數組添加元素
直接向數組添加元素需要非常小心,給大家總結一下正確的添加方法:
(1)向索引數組添加元素
比如已有索引數組:
$ydtx = array (
1 => '通訊基礎',
2 => '通訊裝置',
3 => '測試最佳化',
4 => '3G',
5 => 'LTE'
);
若要向這個數組添加“室內分布系統”,代碼如下:
$ydtx[6] = '室內分布系統';
或
$ydtx[ ] = '室內分布系統';
註:如果鍵都是數值、變數或者常量,那麼不用將之用引號引用。
對於索引數組,方括弧內如未填寫數值,那麼“室內分布系統”就會按順序添加到最後,如圖3所示:
圖3
(2)向關聯陣列添加元素
比如下面這個數組:
$chapter = array (
'第一章' => '移動通訊發展史',
'第二章' => '通訊系統概述’,
'第三章' => '通訊協定',
'第四章' => '傳輸技術'
);
若要向這個數組添加“調製方式”,代碼如下:
$chapter['第五章'] = '調製方式';
和索引數組不同,向關聯陣列添加元素時必須要指定鍵,否則添加的內容會和數組中已有的鍵和值進行奇怪的組合。
總結:
無論向索引數組還是向關聯陣列添加元素時一定要使用中括弧。如沒有中括弧將引發錯誤,比如使用以下代碼會引發錯誤:
$ydtx = ‘室內分布系統’;
用上面這行代碼添加數組的結果是添加的值將替換整個已有的數組,只會留下一個字串或者數值。
待續……