iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 2
3
Modern Web

陣列大亂鬥系列 第 2

Day 1:關於那個 array

前言

接下來我們要進入本篇(??)了。既然主題是要聊有關於 array 的事情,那我們第一步當然是要先看看 array 的組成。
如果各位看倌有在網路上蒐過相關文章的話,依據翻譯的不同,大致上會有「陣列」、「數組」兩種說法,我自己本身是喜歡稱呼它為陣列,不過還是建議都要了解一下不同的名詞,這樣在看資料的時候會痛比較小一點。當然,如果習慣性看原文的同志們,就不會有這個困擾了。
  
陣列基本上,是程式語法在處理資料的時候最常運用的格式之一,再加上他接受巢狀的行程多維,所以既是最簡單;也是最複雜的資料型態。
當然,畢竟接下來都是簡單的帶過,所以我們主要要看的範圍會是一維陣列,如果對於多維陣列有興趣的各位,可以在自行從下方三個網站中,查看並精進相關細節。

## 什麼是陣列?

對我來說,比較容易理解的解釋是:

陣列就是,將多個值儲存在一個變數當中。
An array stores multiple values in one single variable.

也因此,它的基本結構就會是:

  1. 產生一個陣列。
  2. 宣告一個變數。
  3. 將此變數指向該陣列。

這點不管是從哪個語言來看都是如此。


創建陣列

JS

創陣列的方式,JS 有兩種方式可以採用。

// javascript

// 用 new 宣告
const aryOne = new Array();

// 採用實字宣告
const aryTwo = [];

基本上,這兩種宣告方式沒有太大的差別,但若是你想在創建的過程中就塞入數字當值的時候,就會有不同的結果了。

// javascript
const aryOne = new Array(10);
// > ['', '', '', '', '', '', '', '', '', '']

const aryTwo = [10];
// > [10]

PHP

創建陣列的方法就只有一種,但隨著PHP語法版本的更新,有不同的呈現方式。

// php
<?
    $aryOne = array('a', 'b', 'c');

    // PHP 5.4 之後
    $aryTwo = ['a', 'b', 'c'];
?>

以上面的內容來看,會感覺兩個其實根本就差不多,只是寫法稍稍有些不同而已,更別說 PHP 5.4 之後只有宣告變數的方式有差異。

但是世界總歸不是這麼美好,雖然對 JS 來說,陣列內部只包含了 index 跟 value,但是 PHP 陣列宣告所包含的,卻是 key 跟 value。

意思也就是說,標準的 PHP 陣列寫法應該是:

// php
<?
    $myArrray = array(
        'a' => 'value one',
        'b' => 'value two',
        'c' => 'value three',
    );

?>

上面的結構有沒有一種濃濃的即視感?
看下面的程式碼就可以理解了。

// javascript
const obj = {
    a: 'value one',
    b: 'value two',
    c: 'value three',
}

沒錯,它的結構跟 JS 的物件幾乎一模一樣,所以我通稱 PHP 其實是一種陣列跟物件的集合體。


比較

對象 JS Array JS Object PHP Array
創建方法 new Array();、[] new Object();、{} array();、[]
索引 index (自動編碼,從 0 開始) keys keys(若是沒有提供 key 值,會自動編號)
調用方法 ary[index] obj[keys]、obj.keys ary[keys]

參考資料

以上內容將會不同步發佈在 blogger 中:第 11 屆鐵人賽系列文


上一篇
Day 0:在開始之前
下一篇
Day 2:Is Array or Not
系列文
陣列大亂鬥30

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2019-10-10 16:44:41

不同步發佈 Asynchronous Announcement (胡言亂語中...

Hina Hina iT邦新手 5 級 ‧ 2019-10-11 22:45:34 檢舉

事實證明,只有前幾天有精力整理。
後來寫完就直接睡死了XDD

之後應該是全部結束才會搬家吧

/images/emoticon/emoticon37.gif

我要留言

立即登入留言