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
Lua 迭代表中的表_Lua - Fatal编程技术网

Lua 迭代表中的表

Lua 迭代表中的表,lua,Lua,我有一个表localcookies={{[“name”]=23、[“value”]=333}、{[“name”]=222、[“value”]=33233},我想迭代子表以找到一个具有正确“name”的子表。这是我试过的 for _,elm in ipairs(cookies) do for k,v in ipairs(elm) do print(k) if k == "name" and v == 222 then print(v)

我有一个表
localcookies={{[“name”]=23、[“value”]=333}、{[“name”]=222、[“value”]=33233}
,我想迭代子表以找到一个具有正确“name”的子表。这是我试过的

  for _,elm in ipairs(cookies) do
    for k,v in ipairs(elm) do
      print(k)
      if k == "name" and v == 222 then
          print(v)
      end
    end
  end

我确实在表的外部for循环中显示了它,但是,它甚至没有进入内部for循环-为什么?如何找到“name”等于某个值的子表?

ipairs
只迭代键1、2、3,…,因此它不会访问键
“name”
。如果要访问所有键,请使用
(尽管要注意,迭代顺序是不可预测的)

然而,对于您的示例,您根本不需要内部循环。您可以简单地将elm的名称设置为
elm.name

for _,elm in ipairs(cookies) do
    if elm.name == "222" then
        print(elm.name, elm.value)
    end
end    
事实上,如果您不需要排序或需要支持重复的cookie名称,您的
cookies
表可能会成为name=>value的字典,允许您编写此表而不需要循环:

print(cookies["222"]) --> 33233

尝试使用
而不是内部
ipairs
来代替
ipairs
中的“i”代表整数,或者更具体地说,代表正整数键,最多不包括第一个“缺少的”键(
cookies[k]==nil
)。即使重复的cookies也可以作为
name=>[values]
的dict来完成,尽管这仍然会失去顺序。