陣列

陣列可以存入多個不同類型的數據,是複合資料型別。

我們可以使用array()來初始化數組,每個數組元素之間使用逗號分隔 

在PHP5.4版本之後,數組的初始化更為簡潔,用中括號 [] 來初始化

我們來建立一個簡單的陣列:

<?php
 header("Content-type:text/html;charset=utf-8");    //设置编码
 $array=array(100,1.34,true,"PHP中文网",);
 echo '<pre>';
 var_dump($array);
 echo '<pre/>';
 ?>

在上例中,我們發現我們存入了:

1.    整數

2.    浮點

3.    布林

#4.    字串

#:上例中echo pre這個標籤的主要目的是為原樣輸出,格式顯示的更好看,更清晰。

我們對程式運作的結果來看看:

1.    array(size = 4) 說明裡面有4個元素

2. 0 => int 100我們知道int是整數的意思,100是整數的數值。那前面的0,1,2,3和=>代表什麼意思呢?

3.    最新前的0,1,2,3代表的是值的讀取識別號,我們稱為下標或鍵(英文:key)

4.    = > 是一個符號標準叫法叫作:鍵值對應符。因此,以後再看到 0=> int 1 可以這樣來說。 下標訪問符0對應整型的1。

5.    我們也稱數組裡面的鍵值對為元素,而元素就是鍵值對的組合。

透過上例,我們就完成了數組其中的一種宣告方式:索引數組的宣告。所謂索引數組:就是下標全為整數的數組。


小知識

#索引數組的下標必須從0開始嗎?

答:這個問題其實不然,索引陣列不一定要從0開始。

那如何能夠不從0開始呢?

答:需要用到大家在上面學的一小塊知識喲。就是鍵值對應符。如下

<?php
 header("Content-type:text/html;charset=utf-8");    //设置编码
 $kele = array(5=>'只有不断努力才能博得未来',10 => 'php.cn', 'PHP中文网' ,'好好学习哦',  19 => '去PHP中文网学习PHP');
 //打印显示$kele
 echo '<pre>';
 var_dump($kele);
 echo '</pre>';
 ?>

透過上面的例子可以看出,我們的索引數組下標是從5開始的哦

我們來總結規律:

  1.     索引數組若不強制聲明他的下標,他的下標是從0開始的。 (我們的第一個陣列的值:只有不斷努力才能博得未來。這個值的下標為0)。

2.    如果我指定過下標他的下標就為我指定的值。如下標為5,10和下標為19的,都是我指定過的值。

3.    若某個值(如php.cn),強制指定了下標(下標為10)。在它後面加上的值(PHP學院),不指定下標的話。他們的下標增

長法則為最大值+1。


關聯陣列

索引陣列適當的變一下形就出現了關聯數組。只要數組裡面有一個為字串的數組,就為關聯數組。

那我們來宣告關聯數組。跟索引數組的聲明方式完成一樣。不過不同的是,必須要指定字串的下標和必須要使用鍵值對應符。

實例

<?php
 $arr=[            //用[]创建数组
     'name'=>'Tom',
     'age'=>'18',
     'gender'=>'male'
 ];
 echo "<pre>";
 var_dump($arr) ;
 echo"</pre>"
 ?>

#我們透過實驗知道:

1 .    宣告關聯陣列是鍵名=> 值

2.    在關聯陣列中可以有索引陣列的元素


##陣列是我們最常使用到的類型,那麼如何計算某個一維數組的個數呢。其實我們可以用到我們之前學過的數學函數裡面的一個:

count()

count($變數) 函數用來傳回陣列的長度(元素數):

實例#

<?php
$name=Array('tom','andy','jack');
echo count($name);
?>


用for迴圈遍歷索引數組

遍歷二字,從字面解釋就是一個接一個全讀訪問一次,顯示出來。

因為for迴圈是一個單純的計數型循環,而索引數組的下標為整數的數值。因此,我們可以透過for迴圈來遍歷索引數組。

實例

<?php
 $arr=Array('tom','andy','jack');
 $arrlength=count($arr);
 for($x=0;$x<$arrlength;$x++){
     echo $arr[$x];
     echo  "<br/>";
 }
 
 ?>

#透過上面的例子,我們就把陣列做了循環。

因為下標是從0開始的,定義$i=0 。每次循環的時候讓$i 加1 ,但是必須要小於3,因為陣列下標的最大值為2。

這樣,我們就學會了對索引連續下標數組的遍歷。


那麼問題來了:

那關聯數組怎麼辦? 如果索引數組的下標不連續怎麼辦?

這就要用到我們下面所學的知識了。

foreach的基本語法

有一個布林型迴圈是專門用來循環陣列的。這個迴圈的基本語法就是foreach基本語法

foreach( 要循環的陣列變數as [鍵變數=>] 值變數){

    //循環的內容

#}

這是固定用法,要循環的陣列放進去。

as 是一個固定的關鍵字

後面的鍵變數是可選的,隨意定義一個變量,每次循環的時候,foreach這個語法會把鍵取出來賦值到鍵變數裡面

後面的值變數是必填的。每次循環的時候,會把值放到值變數裡面。

我們下面用程式碼來舉例子,加強對這個文法的理解。

實例

?php
 $arr=[
     'name'=>'Tom',
     'age'=>'18',
     'gender'=>'male'
 ];
 foreach($arr as $key=>$value){
     echo $key.": ".$value."<br />";
 
 };
 ?>

透過上面的運行結果我們得到下面的結果:

1.    每次循環的時候,下標賦值給了變數$key,把值的變數賦值給了變數$value

2.    循環一次讀一次鍵和值。讀到最後,發現沒有可以讀取的陣列元素後,停止循環遍歷資料。

注意:$key 和$value並不是變數名必須得為這兩個名字。你命名為其他的也可以,如 $kai => $wen是一樣的。 你要清楚鍵賦值

給了哪個變量,值賦值給了另外的哪個變數。

透過foreach遍歷連續的索引數組,如下例:

<?php
 header("Content-type:text/html;charset=utf-8");    //设置编码
 $data = array(
     0 => '中国',
     100 => '美国',
     20 => '韩国',
     300 => '德国',
 );
  
 foreach($data as $k => $v){
 
     echo $k . '------' . $v .'<br />';
 
 }
 ?>

依照foreach的結果推理與剛剛做的關聯數組的結果是一樣的。

不同的是不連續的索引數組。每讀一次數組的元素,將當次循環的下標賦值給了變數$k,值賦值給了變數$v。每讀將鍵和值輸

出,然後顯示出來。循環一次向後移動一次下標。讀取至最後,退出執行。


多維數組

我們將在PHP 高階教程中講解多維數組。

完整的 PHP 陣列參考手冊

#如需完整的陣列函數參考手冊,請造訪我們的 PHP 陣列參考手冊。

此參考手冊包含每個函數的簡要描述、使用範例。



繼續學習
||
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $array=array(100,1.34,true,"PHP中文网",); echo '<pre>'; var_dump($array); echo '<pre/>'; ?>
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!