Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua如何访问嵌套表中的特定数据_Lua_Nested_Lua Table - Fatal编程技术网

Lua如何访问嵌套表中的特定数据

Lua如何访问嵌套表中的特定数据,lua,nested,lua-table,Lua,Nested,Lua Table,我将一些数据从CSV文件解析到Lua表 假设这张桌子看起来更大 tab { { id = 1761, anotherID=2, ping=pong} { id = 2071, anotherID=4, ping=notpong} } 现在我想知道每个ID(不显示任何其他数据),以便将它们存储在另一个表中一段时间 我现在在这里完全迷路了 用你写的东西,我重写了一点,然后得到: minitab = {} for i, value in ipairs(tab) d

我将一些数据从CSV文件解析到Lua表

假设这张桌子看起来更大

tab {
     { id = 1761, anotherID=2, ping=pong}
     { id = 2071, anotherID=4, ping=notpong}
}
现在我想知道每个ID(不显示任何其他数据),以便将它们存储在另一个表中一段时间

我现在在这里完全迷路了

用你写的东西,我重写了一点,然后得到:

minitab = {}
        for i, value in ipairs(tab) do
            local id = value.id
            local anotherID = value.anotherID
            minitab[id] = anotherID
        end

这样行吗?事实上,我后来只想得到一个更大数组的2个值(大约30个数据)——但我只能将单个数组推送到GUI下拉列表中。我想将ID保存为键,“anotherID”值将是该键后的文本,因此如果询问2071个值,它将显示“name”4

下面的代码将ID作为键存储在另一个表中:

id={}
for k,v in ipairs(tab) do
  id[v.id]=true
end
然后,您可以使用
遍历
id
以列出id


如果要记住每个id的来源,请在循环中使用
id[v.id]=k

下面的代码将id作为键存储在另一个表中:

id={}
for k,v in ipairs(tab) do
  id[v.id]=true
end
然后,您可以使用
遍历
id
以列出id


如果您想记住每个id的来源,请在循环中使用
id[v.id]=k

根据您的问题,您可以使用此代码遍历数据表
选项卡
,并获取用于GUI阵列的
minitab

--data
tab = {
  {id = "4204", label = "2", desc = "Roancyme"},
  {id = "5517", label = "9", desc = "Bicktuft"},
  {id = "1035", label = "3", desc = "Pipyalum"},
}

--temporary table
local minitab = {}
for i, option in ipairs(tab) do
  minitab[option.id] = option.label
end

--print minitab
print('<select>')
for id, label in pairs(minitab) do
  print(string.format('<option value="%s">%s</option>', id, label)) --> <option value="1035">3</option>
end
print('</select>')
print()
除非您在下拉列表上显示列表之前需要使用它(例如,在
标签
中添加一些前缀,按标签对
小标签
进行排序等);但您不想干扰原始数据表
选项卡
。在这种情况下,使用临时表是有意义的

--format values in temporary table
local minitab = {}
for i, option in ipairs(tab) do
  local minitabID = option.id
  local minitabLabel = string.format('Item %s - %s', option.label, option.desc)
  table.insert(minitab, {id = minitabID, label = minitabLabel})
end

--sort temporary table
table.sort(minitab, function (o1, o2) return o2.label > o1. label end)

--print formatted values from temporary table
print('<select>')
for i, option in ipairs(minitab) do
  print(string.format('<option value="%s">%s</option>', option.id, option.label)) --> <option value="4204">Item 2 - Roancyme</option>
end
print('</select>')
——格式化临时表中的值
本地minitab={}
对于i,ipairs(选项卡)do中的选项
本地minitabID=option.id
本地minitablebel=string.format('Item%s-%s',option.label,option.desc)
insert(minitab,{id=minitabID,label=minitablebel})
结束
--排序临时表
表.排序(迷你选项卡,函数(o1,o2)返回o2.label>o1.label结束)
--打印临时表中的格式化值
打印(“”)
对于i,ipairs(minitab)中的选项do
打印(string.format('%s',option.id,option.label))-->第2项-Roancyme
结束
打印(“”)

注意:请注意哪个表迭代使用
ipairs
,哪个表迭代使用
。请参阅完整的代码片段。

根据您的问题,您可以使用此代码遍历数据表
选项卡
,并获取用于GUI阵列的
迷你选项卡

--data
tab = {
  {id = "4204", label = "2", desc = "Roancyme"},
  {id = "5517", label = "9", desc = "Bicktuft"},
  {id = "1035", label = "3", desc = "Pipyalum"},
}

--temporary table
local minitab = {}
for i, option in ipairs(tab) do
  minitab[option.id] = option.label
end

--print minitab
print('<select>')
for id, label in pairs(minitab) do
  print(string.format('<option value="%s">%s</option>', id, label)) --> <option value="1035">3</option>
end
print('</select>')
print()
除非您在下拉列表上显示列表之前需要使用它(例如,在
标签
中添加一些前缀,按标签对
小标签
进行排序等);但您不想干扰原始数据表
选项卡
。在这种情况下,使用临时表是有意义的

--format values in temporary table
local minitab = {}
for i, option in ipairs(tab) do
  local minitabID = option.id
  local minitabLabel = string.format('Item %s - %s', option.label, option.desc)
  table.insert(minitab, {id = minitabID, label = minitabLabel})
end

--sort temporary table
table.sort(minitab, function (o1, o2) return o2.label > o1. label end)

--print formatted values from temporary table
print('<select>')
for i, option in ipairs(minitab) do
  print(string.format('<option value="%s">%s</option>', option.id, option.label)) --> <option value="4204">Item 2 - Roancyme</option>
end
print('</select>')
——格式化临时表中的值
本地minitab={}
对于i,ipairs(选项卡)do中的选项
本地minitabID=option.id
本地minitablebel=string.format('Item%s-%s',option.label,option.desc)
insert(minitab,{id=minitabID,label=minitablebel})
结束
--排序临时表
表.排序(迷你选项卡,函数(o1,o2)返回o2.label>o1.label结束)
--打印临时表中的格式化值
打印(“”)
对于i,ipairs(minitab)中的选项do
打印(string.format('%s',option.id,option.label))-->第2项-Roancyme
结束
打印(“”)

注意:请注意哪个表迭代使用
ipairs
,哪个表迭代使用
。请参阅完整的代码片段。

对此进行了一些处理,将k,v替换为i,value-如果我现在想以minitab{1761=2,2071=4}的表格格式保存2个变量,我该怎么做?要编辑这个问题,注释代码不是很好:用它做了一些工作,用i,value替换了k,v-如果我现在想以minitab{1761=2,2071=4}的表格格式保存2个变量-我该怎么做?要编辑问题,注释代码不好:D