我正在用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做到这一点?
答案 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。序列化需要对具有嵌套,函数,循环等的表进行合理处理。您可以使用在数据上学到的经验教训。