如何访问这样的表中的数据?

时间:2012-02-18 06:46:53

标签: lua

我正在用lua编写一个程序。我有以下列方式组织的数据:

t= {
    i1 = {
        p1 = { value = "i1p1" },
        p2 = { value = "i1p2" }, 
        -- etc
        pm = { value = "i1pm" }
    },
    i2 = {
        p1 = { value = "i2p1" },
        p2 = { value = "i2p2" },
        -- etc
        pm = { value = "i2pm" }
    },
    im = {
        p1 = { value = "imp1" },
        p2 = { value = "imp2" },
         -- etc
        pm = { value = "impm" }
    }
} --(inner tables)

另一方面,每组数据都由两个变量i& p索引,我确信数据保持正确,但我想要一种方法从他们的表中打印数据因为我不知道i的值和p迭代它们甚至数字n&任何人都知道如何用lua做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您知道嵌套(内部)表的深度,则可以显式迭代到该深度:

for k1,v1 in pairs(t) do
    for k2,v2 in pairs(v1) do
        for k3, v3 in pairs(v2) do
            print(k3, ":", v3)
        end
    end
end

或者,您可以递归迭代到嵌套结构中:

function print_tbl(tbl)
    if type(tbl) == "table" then
        for _,v in pairs(tbl) do
            print_tbl(v)
        end
    else
        print(tbl)
    end
end

print_tbl(t)

这只是一个例子。如果您的表包含函数,包含userdata,或者您的嵌套具有循环,则需要采用不同的方法。看一下Lua用户wiki上的table serialization。序列化需要对具有嵌套,函数,循环等的表进行合理处理。您可以使用在数据上学到的经验教训。