在Lua中的数组索引操作

在 Lua 中显示数组时,它总是从 1 开始,因此我在我的 SQL 查询中使用它作为 select * from ... 的参考 table.id。 我的问题现在是,如果“table.id”的 SQL 查询不是以 1 开始,或者它将像“[3,5,6,...]”一样怎么办?

我的代码如下,

local data = {}

for row in db:nrows("SELECT song.id as id, song.title as song, artist.name as artist, genre.name as genre, album.title as album FROM song, artist, genre, album WHERE song.artist_id = artist.id AND song.genre_id = genre.id AND song.album_id = album.id AND song.duration = 120.00") do
                        data[row.id] = {}
                        data[row.id].song = row.song
                        data[row.id].artist = row.artist
                        data[row.id].genre = row.genre
                        data[row.id].album = row.album
end

因此,“row.id”的输出是“[3,5,6,..]”,因为我将“row.id”用作数组“data”的索引。

我的问题是,我应该做什么或使用什么,使数组“data”的索引变为“[1,2,3,....]”?

原文链接 https://stackoverflow.com/questions/10577164

点赞
stackoverflow用户726361
stackoverflow用户726361

你可以使用一个索引变量:

local data = {}
local next = 1

for row in db:nrows("SELECT song.id as id, song.title as song, artist.name as artist, genre.name as genre, album.title as album FROM song, artist, genre, album WHERE song.artist_id = artist.id AND song.genre_id = genre.id AND song.album_id = album.id AND song.duration = 120.00") do
    data[next] = row
    next = next + 1
end
2012-05-14 03:22:47