如何从Lua中的表中获取价值

时间:2018-01-03 13:13:58

标签: lua lua-table

我有多个值的表,我想打印每个值。

就像:

  

'值_1' ' _2'等。

 table = {
        {'value_1'},
        {'value_2'},
        {'value_3'},
        {'value_4'},
    }

我尝试了for k, v,但我失败了:

for k, v in pairs(table) do
    print(v)
end

3 个答案:

答案 0 :(得分:3)

您的表的值是表本身。所以试试这个:

for k, v in pairs(table) do
    print(v[1])
end

或者创建一个更简单的表并使用原始代码:

table = {
    'value_1',
    'value_2',
    'value_3',
    'value_4',
}

答案 1 :(得分:0)

我不确定您的示例是否是生产代码,但您可以进行一些优化(尽管很小):

- 将表格设为局部变量(即):local table = {}; - 删除不必要的表格(即):{'value1'};>> 'value1'; - 将k,v循环更改为泛型for循环(我相信会更有效吗?)。

最终代码(正如我所说):

local Table = {
    "value_1";
    "value_2";
    "value_3";
    "value_4";
};

for Key = 1, #Table, 1 do
    print(Table[Key]);
end;

随意提出任何问题。哦,如果您计划多次运行此代码,请考虑将local print = print;放在代码上方以定义局部变量(它们更快)。

答案 2 :(得分:0)

当您有子表时,您正在使用多维数组。您可以索引如下的子表。

public function remove($id)
    {
        $cart = Session::get('cart');
        unset($cart->items[$id]);
        Session::put('cart', $cart);

        return back();
    }

要在没有for循环的情况下索引上表,您可以使用[]' s。

local tab = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
}

for i, v in next, tab do
    print(i, v)
    for n, k in next, v do
        print(">", n, k)
    end
end

-- 1    table: 000001
-- > 1  1
-- > 2  2
-- > 3  3
-- 2    table: 000002
-- > 1  4
-- > 2  5
-- > 3  6
-- 3    table: 000003
-- > 1  7
-- > 2  8
-- > 3  9

仅限于数字索引。您可以使用字符串和特殊方法来索引它们。

print(tab[1][1]) --> 1
print(tab[1][2]) --> 2
print(tab[2][1]) --> 4
print(tab[2][2]) --> 5