進度條

【PHP】15. 陣列 Array (矩陣)介紹

【PHP】15. 陣列 Array (矩陣)介紹

作者: 進度條編輯群 更新日期:

此文章也有影片介紹,可以搭配影片一起學習!

01. 陣列(矩陣)介紹 (所屬課程)

02. 陣列(矩陣)介紹 (所屬課程)


以下正式開始文章


甚麼是陣列(矩陣)?

如果你是程式語言的初學者,可能會對陣列或矩陣有些疑惑,其實在國中時期時我們就有學過矩陣了(遠目)~
 

 

如果要更簡單一點說明,我們可以把它想成是表格,

 

 

那其實用HTML語法也可以畫出表格,

<table border=1>
  <tbody>
    <tr>
      <td>
        進度條
      </td>
      <td>
        線上
      </td>
      <td>
        課程
      </td>
    </tr>
  </tbody>
</table>    

 

瀏覽器顯示結果:

 

 

除了<table>標籤製作表格外,我們也可以用<ul><li>列出清單,

<ul>
 <li>紅色</li>
 <li>黃色</li>
 <li>綠色</li>
</ul>    

 

輸出結果如下:

紅色
黃色
綠色    

 

我們也可以以上面的邏輯,用PHP語法先建立一個表格,表格裡面放上儲存的資料。

和HTML不同的是,HTML是靜態的將表格印在瀏覽器上, PHP是你可以把資料都先儲存起來,等到需要某一個值的時候, 再把特定語法把它叫出來。

 


陣列(Array)的寫法

我們可以簡單用以下兩種方式建立一個陣列,

 

 

[重點]

1.值裡不一定只能放字串,也可以放數字、物件(object)…關於物件後面的章節會講到,現在先知道有這件事就好。
2.一個陣列可以儲放無限個值(實際上不可能,畢竟你的記憶體空間不是無上限的)。

 

雖然我們可以用字串的方式來分析,譬如說我們想要「進度條線上課程」的「線上」這兩個字,我們可以先建立變數:

$string = “進度條線上課程”

然後去做字串的分析,取出第四個字和第五個字。

 

但如果今天資料量很大,譬如一個班級的姓名名單,你把它全部排成一整個字串,那整個字串是沒有意義也很費工。

例如:「張小明林小華李小美」,三個人名字連在一起,很難用。

 

如果用陣列的方式,一開始就先切好,取得「線上」這兩個字我只要去找陣列裡面的第二個值「線上」就好。

 

所以你可能會寫出類似下面的程式:

 

<?php

  $array1 = array("進度條", "線上", "課程" );

  var_dump( $array1 );

  echo "<br/>";

?>   

 

輸出結果:    

array(3) { [0]=> string(9) "進度條" [1]=> string(6) "線上" [2]=> string(6) "課程" }    

 

 

這邊我們先解釋一下var_dump()的輸出結果:

array(3) →  代表矩陣裡總共有3個值

[0] [1] [2]  → 代表位於位於矩陣裡的排列,程式語言裡排序0, 1, 2是指在現實世界裡排第1,2,3個(由0開始很重要,一定要變成直覺反應)

string(9) string(6) string(6) →代表裡面的值有幾個字元,譬如「進度條」有9字元,「線上」有6個字元,「課程」6個字元 (在PHP裡一個中文字由3個字元組成的,一個英文字由1個字元組成)

 

 

如何用陣列取出特定的值?

如果我們只希望在$array1 =array( "進度條", "線上", "課程" )中,取出「進度條」這個值的話要怎麼做呢?

 

我們可以使用

echo $array1[0];

也就是變數後加上[key],key放要取出第幾個值,第一個值就寫0。

 

 

<?php

  $array1 =array("進度條","線上","課程");

  echo $array1[0];

  echo “<br/>”;

?>    

 

輸出結果:

進度條    

 

 

再給個例子

同樣我們也可以宣告一個英文版的$array2變數

<?php
  $array2 = ["Progress","Bar","TW"];
  var_dump($array2);
  echo “<br/>”;
?>    

 

輸出結果:

array(3) { [0]=> string(8) "Progress" [1]=> string(3) "Bar" [2]=> string(2) "TW" }    

 

那麼如果我想要拿「Bar」這個值要怎麼做呢?留給同學試看看囉!

提示:利用 變數[key] 的方式

 

 

 

利用GET方法取值

 

在第12堂我們有學到如何用GET方法和POST方法取得HTML傳遞參數,首先先在程式碼加上

echo $_GET["value"]; 

 

<?php

  $array1 = array("進度條", "線上", "課程");
 
  echo $array1[0];

  echo $_GET["value"];

  echo "<br/>";

?>    

 


接著在.php後輸入?value="進度條",按ENTER鍵執行,就可以利用GET方法取到網址參數「進度條」這個值了!

 

 

 

陣列(array)與雜湊表(hash table)  

接下來的部分對初學者來說可能有點複雜與奇怪,首先在PHP裡面陣列(array)與雜湊(hash table)是同一件事情。那雜湊表(hash table)是甚麼?

 

它是類似JavaScript的Object資料型態(轉成文字就變JSON),在不同程式語言有不同的官方說法:

hash table 雜湊表 (Ruby on Rails)
key-value store 鍵值存儲
Dictionary 字典 (Object C、swift)

 

那麼它要怎麼使用呢?我們知道程式語言裡排序0,1,2 是指在現實世界裡排第1,2,3個,因此第0個是「進度條」,第1個是「線上」,我們可以這樣子寫:
 

<?php

  // 沒看錯,直接使用 => 符號 
  $array1 = array(
    0 =>  "進度條", 
    1 =>  "線上"
  );

  var_dump($array1);
  echo $array1[1];
  echo <br/>;

?>    



結果和之前的array是一模一樣的。

 

 

也可以數字倒過來寫,最後加了逗點也不會報錯。    

<?php

  $array1 =array(
    1 =>  "線上",
    0 =>  "進度條",   //", "可加可不加
  );

  var_dump($array1);
  echo $array1[1];
  echo <br/>;
?> 

 

 

這時候你可以發現1在前面,0在後面,也就是說我們可以自己填上我們想要的key (箭頭前面的東西),而它不只可以放數字,也可以放字串,例如「online」。

 

<?php

  $array1 =array(
  "online" =>  "線上",
    0 =>  "進度條",
  );

  var_dump($array1);
  echo $array1["online"];
  echo <br/>;

?>    

 

這樣依然可以拿到「線上」這兩個字,有點像先前的GET方法。

 

 

 

代表我們可以用箭頭來設定key和值,“online “=>  "線上",箭頭左邊放key,右邊放值。因此我們可以發現在PHP裡面,儘管我們使用的是array這個關鍵字,實際上產生出來是hash table。只是說宣告的時候,沒有使用箭頭的這種宣告方式。

 

這個與JavaScript是一樣,如果用箭頭的話,它可以把key從0,1,2,3,4,設成你指定的東西。

同一個array可以用不同型態的key,話雖如此但不建議,因為如同先前課程提到過的,PHP會自動轉換型別。

如果要使用key的話,就全部都用key,就算它是0它也應該是"0",否則程式碼一多的時候,容易碰到奇怪的問題。

 

特別注意,key的雙引號內的空白也是字串的一部分,key-value就是要key值完全正確才取得出value喔!

 

 

 <?php 

  $array1 = array(
  "online" =>  "線上",
      0      =>  "進度條",
  );

  var_dump($array1);
  echo $array1["online"];
  echo <br/>;

?>    

 

 

關於陣列的新增與刪除,將於下一堂課講解。

 

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊