# 10 Lua 數組
數組,就是相同數據類型的元素按一定順序排列的集合,可以是一維數組和多維數組。
Lua 數組的索引鍵值可以使用整數表示,數組的大小不是固定的。
---
## 一維數組
一維數組是最簡單的數組,其邏輯結構是線性表。一維數組可以用for循環出數組中的元素,如下實例:
```lua
array = {"Lua", "Tutorial"}
for i= 0, 2 do
print(array[i])
end
```
以上代碼執行輸出結果為:
```lua
nil
Lua
Tutorial
```
正如你所看到的,我們可以使用整數索引來訪問數組元素,如果知道的索引沒有值則返回nil。
**在 Lua 索引值是以 1 為起始,但你也可以指定 0 開始。**
除此外我們還可以以負數為數組索引值:
```lua
array = {}
for i= -2, 2 do
array[i] = i *2
end
for i = -2,2 do
print(array[i])
end
```
以上代碼執行輸出結果為:
```lua
-4
-2
0
2
4
```
---
## 多維數組
多維數組即數組中包含數組或一維數組的索引鍵對應一個數組。
以下是一個三行三列的陣列多維數組:
```lua
-- 初始化數組
array = {}
for i=1,3 do
array[i] = {}
for j=1,3 do
array[i][j] = i*j
end
end
-- 訪問數組
for i=1,3 do
for j=1,3 do
print(array[i][j])
end
end
```
以上代碼執行輸出結果為:
```lua
1
2
3
2
4
6
3
6
9
```
不同索引鍵的三行三列陣列多維數組:
```lua
-- 初始化數組
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows do
for col=1,maxColumns do
array[row*maxColumns +col] = row*col
end
end
-- 訪問數組
for row=1,maxRows do
for col=1,maxColumns do
print(array[row*maxColumns +col])
end
end
```
以上代碼執行輸出結果為:
```lua
1
2
3
2
4
6
3
6
9
```
正如你所看到的,以上的實例中,數組設定了指定的索引值,這樣可以避免出現 nil 值,有利于節省內存空間。
- 1 Lua介紹及環境
- 2 基本語法
- 3 數據類型
- 4 Lua 變量
- 5 循環
- 6 流程控制
- 7 函數
- 8 運算符
- 9 字符串
- 10 數組
- 11 迭代器
- 12 table
- 13 Lua 模塊與包
- 14 Lua 元表(Metatable)
- 14.1 元表案例
- 15 Lua 協同程序(coroutine)
- 16 Lua 文件IO
- 17 Lua 面向對象
- 17.1 類
- 17.2 繼承
- 17.3 封裝
- 18 Lua 與 Mysql
- 19 Lua 與 redis
- 20 Lua 與 JSON
- 21 Lua 與 http
- 22 Lua 與 Nginx
- 22.1 Nginx_Lua的安裝及環境
- 22.2 ngx_lua API(全表)
- 22.3 常用命令介紹
- 22 Lua 人工智能
- (1) Torch的安裝
- (2)Tensor
- Lua與C混合編程