Array 是什麼?簡單來說,Array 是一種資料結構,用來儲存大量相似的資料。
如果沒有 Array,當你要儲存多個類似的資料,例如,三個數字,你必須要宣告並使用三個變數。
$num1 = 10;
$num2 = 20;
$num3 = 30;
但是透過 Aarry 的協助,你只需要使用一個變數。
$nums = [10, 20, 30];
當然 Array 不只讓你更方便地儲存資料,Array 作為 PHP 的核心資料結構,也提供了許多方便的方法,讓你可以更彈性的操作 Array 中的資料。
PHP Array 基本概念
PHP 的 Array,本質上是由多組鍵值對 (key-value pair) 組成的結構,在 Array 中的每一筆資料,都有一個 key,和其對應的 value,概念如下。
array(
key => value,
key2 => value2,
key3 => value3,
...
)
新建 Array
在 PHP 中,實際要使用 Array 的方式很簡單,可以透過array()
來創造。
$nums = array(
'a' => 10,
'b' => 20 ,
'c' => 30
);
在 PHP 5.4 的版本以後,可以用比較精簡的 []
來代替 array()
。
$nums = [
'a' => 10,
'b' => 20 ,
'c' => 30
];
兩者的意思是相同的,但建議新寫的程式採用短版,版面會比較精簡可讀。
另外,在創建 Array 的時候,不見得要提供 key值,像下面的作法也是合法的:
$nums = [10, 20, 30];
但 PHP 的 Array 仍是 key-value 的結構,為維持結構的一致性,採用這種寫法的時候,PHP 會自動加上 key。
所以上述的寫法,等同於:
$nums = [
0 => 10,
1 => 20,
2 => 30
];
沒有提供 key 的 array,創建時 PHP 會從整數 0 開始,依序給予 key 值。
嚴格來說,PHP 是從目前已經使用過的整數 key 值中的最大值開始往後遞增。大家可以試試看
$nums = [2 => 10, 20, 30];
會發生什麼事。
當然,你也可以把其他變數放到 Array 裡面。
$num1 = 10; $num2 = 20; $num3 = 30;
$nums = [$num1, $num2, $num3];
// 等同於 $nums = [10, 20, 30];
有指定 key 的 array 創建,一樣可以使用變數作為 value:
$nums = [
'aa' => $nums,
];
甚至 key 的值,也可以由變數決定,這邊就不再做示範,大家可以自己嘗試一下。
當你要debug array 的時候,直接
echo
是不行的,可以使用print_r
或var_dump
來印出 array 。
關於 key 跟 value
PHP Array 的 value,原則上可以放任何資料。只要是一般變數可以存的,都可以作為 Array 的 value。
key 原則上只能放整數跟字串,如果放其他類型的東西,有可能會被自動轉型,或者報錯。
你的 array 可以同時有整數跟字串的 key,PHP 沒有強制規定一個 array 的 key 值都要是同一個型別。例如下方的範例,是合法的,只是看起來有點怪異。
$nums = [
0 => 10,
'a' => 20,
2 => 30
];
有一點比較特別的,如果你的 key 值是一個合法的整數,那他會被自動轉換成整數型態。
$nums = ['0' => 'foo', '10' => 'boo'];
等同於:
$nums = [0 => 'foo', 10 => 'boo'];
PHP Array 基本操作
把東西存入 Array,當然也需要把東西從 Array 中拿出來。
讀取資料
要讀取 Array 中的資料很容易,只要透過 []
符號就可以做到。
在[]
中放入目前要拿取的 key 值,PHP Array 就可以找到對應的 value,並回傳。
字串範例:
$nums = [
'a' => 10,
'b' => 20 ,
'c' => 30
];
echo $num['a']; // 輸出: 10
echo $num['c']; // 輸出: 30
整數範例:
$nums = [10, 20, 30];
echo $num[0]; // 輸出: 10
echo $num[2]; // 輸出: 30
修改資料
想要修改 array 中的資料,只要把新的值,放到指定位置就好了。
舉例來說,想要把 'b'
位置的值,更新成 25,只要透過[]
指定'b'
,並重新指派為 25 就可以了。
$nums = [
'a' => 10,
'b' => 20 ,
'c' => 30
];
$nums['b'] = 25;
當然,整數 key 也是一樣的做法,可以試著操作看看。
新增資料
要新增資料,通常會伴隨新的 key 值。所以要怎麼對一個既存的 array 新增一個 key 值?很簡單,又是我們的老朋友[]
。
例如我們想要新增一個 key 'd'
,我們可以這樣做:
$nums = [
'a' => 10,
'b' => 20 ,
'c' => 30
];
$nums['d'] = 40;
這樣 $nums
就會變成:
[
'a' => 10,
'b' => 20 ,
'c' => 30,
'd' => 40
]
另外,如果你的 array 的 key 是純數字,例如:
$nums = [10, 20, 30];
可以透過更簡潔的方式來塞入一個新值:
$nums[] = 40;
當 []
不指定 key 的時候,PHP 會自動幫你接在後面,變成:
[10, 20, 30, 40]
過去大家習慣用 array_push
,但現在可以用這種比較簡潔的方式
移除資料
如果想要把一個 key 值,從 array 中移除,就要借助 unset
方法了。
例如,想要把 'b'
從 array 中拿掉,可以這麼做:
$nums = [
'a' => 10,
'b' => 20 ,
'c' => 30
];
unset($nums['b']);
結果就會變成:
[
'a' => 10,
'c' => 30,
]
整數 key 也是同樣的操作,可以自己試試看。
小結
以上就是 PHP Array 的基本概念與操作,希望大家有理解。
接著會再說明常用的 array functions,也會說明 array 的進階應用。