用陣列來儲存多筆資料

The Different Types of Urgency Campaigns You Can Create
講師 哥布林工程師
關於 用陣列來儲存多筆資料

你好 歡迎回到 Laravel 百萬年薪特訓營
這個單元我們來聊聊幾乎每個程式語言都會有的資料結構
那就是陣列
變數只能夠用來儲存單一筆資料
當資料過多時就需要使用兩種資料結構
那就是陣列以及集合
這個單元就來聊聊基本版的陣列
假如你今天要去 Costco 購物
如果要買的東西只有一個
你可以選擇直接記在腦中
就如同變數一樣
但假如你打算悠閒的在家中喝個拿鐵咖啡並把玩新買的 iPad
那恐怕就不只要買一個東西了
這時候你就需要列出一個清單來記錄要買哪些東西
[換頁]
這個清單就是陣列
陣列的英文是 Array
這個資料結構的特徵是可以有序地來儲存多筆資料
所謂有序就代表裡頭的資料順序是固定的
而存入的每筆資料則稱之為元素
元素的英文則是 Element
[換頁]
不妨想像一下有個櫃子
最上層抽屜放玩具
依次各層分別擺放衣服.文具與雜物
如果要把這個櫃子轉成陣列的話
你可以透過 array() 和中括號這兩種語法
像是左邊這兩行的寫法
功能上並沒有任何差異
你可以根據自己的習慣來選擇用哪一種寫法
我自己是比較偏好使用中括號
陣列的長度代表著該陣列所儲存的元素數量
像 $box 的長度就是 4
可以利用 count() 來計算陣列的長度
如果要取出陣列中的某一個元素
則是要搭配使用陣列變數以及中括號
並在中括號內傳入該元素的索引值
索引值我們等一下來談
假如要刪除整個陣列的話
可以透過 unset() 將陣列傳入即可
但如果要刪除陣列的某個元素
則是改成將該元素傳入 unset()
[換頁]
所謂索引值 index 指的是元素位於陣列中的所在位置
但不是從 1 起算 而是從 0 開始
這一點請特別注意
因此玩具的索引值為 0
而雜物的索引值則為 3
要取出玩具的語法也很簡單
比如 $box[1] 就能取出陣列中索引值為 1 的玩具
有意思的是要要存入新值與取出的語法相同
差別只在於位於等號的左邊或右邊
放在等號左邊時表示要在陣列的該位置放入新的內容
[換頁]
下一個來討論多維陣列的議題
你或許聽過二維陣列但不清楚是指什麼意思
那代表的是陣列內的某一個元素也是陣列
類似箱中箱的概念
以這張圖來說我們把第二層的文具替換成另一個儲藏箱
裡頭又有兩層可以放襪子與鞋子
那我們要取出襪子的話該怎麼寫才好呢
這對於新手來說或許有些困擾但其實並不困難
如果今晚要吃的牛肉被擺在冰箱第一層裡頭的保鮮盒
那你該如何取出牛肉才好呢
很簡單你需要先取出保鮮盒才能取出裡頭的牛肉
相同的道理你可以先寫 $box[1] 來取出儲藏櫃
繼續接 [0] 就能取出索引值為 0 的襪子囉
一旦理解了這個觀念那麼不管陣列再多層都難不倒你囉
[換頁]
這個單元的最後來討論一個在 Laravel 非常有用的陣列結構
Key Value 鍵值對
你可以把它理解為陣列的進階版本
一般陣列的資料是透過索引值來定位
而鍵值對則是索引值替換成一個自定義的 Key 或稱為鍵
這樣的好處是說在某些情況下
使用鍵來存取元素會比索引值更為直覺
就以這段程式碼來說
zack 100 和 300
分別代表角色的名稱以及血量和魔量
如果要取出血量的話用索引值就需要去記住位置
這很不直覺
改成鍵值對的話我們就能夠去指定 100 的鍵是 hp
之後就能夠改用 ['hp'] 來取出 100 了
這樣是否就直覺且好記多多
請務必多練習使用鍵值對
這在 Laravel 專案中經常會用到
[換頁]
如果還不太清楚陣列的實際應用方式可以參考下一個示範單元
如果有學過其他程式語言的話可以直接跳過
那這個單元就到這邊 掰掰

教材

準備要上課了嗎?

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>