lua 学习小记 table下标

本文详细介绍了Lua语言中表格(table)的使用方法,包括如何获取表格长度、访问元素及判断表格是否为空等实用技巧,并提供了从数据库查询结果中解析数据的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

local a = {x = 10,"qqt",y = 20}

print(table.getn(a))      输出为1

t​able.getn返回值为最后一个值的下标,应该也要是数字。

a 中x=10,和y=20,下标分别为x,y,只有字符串 "qqt"的下标为1

对于数字下标的,要引用,使用a[1]

对于下标为字符的,可以用a["x"]或者​a.x

local a= {x=10,z,"qqt",y=20}

因为z未定义,为nil,table.getn(a)的返回值可能是指向任何一个是 nil 值的前一个位置的下标​,不确定,所以在table中,要避免出现nil的情况。

不能用#a或者table.getn(a) == 0 来判断table是否为空,因为local a = {x = 10,,y = 20}时,两者读出来的是0

可以用

function isTableEmpty(t)
    if t == nil or next(t) == nil then
        return true
    else
        return false
    end
end

对于用openresty mysql取出来的值

  • local select_sql = "select name,age from test"  
  • res, err, errno, sqlstate = db:query(select_sql)  
  • if not res then 

    ngx.say("select error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)

return

 close_db(db)  

  • end
  •   

res的格式如下,

    { name = "wangxiaoer",age = "18"},

    { name = "zhanghong",age = "20"}​

}

第一条数据的下标为默认的1,​

print(table.getn(res))      --output   2

print(res[1].name)或print(res[1]["name"])   --output    wangxiaoer​

print(res[2].age)   --outpu​t   20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值