加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

打印表数据改进版

发布时间:2020-12-14 22:55:34 所属栏目:大数据 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 --------------------------------------------------------------------- This library defines table_print(tb),table_tostring(tb) for -- printin

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

-------------------------------------------------------------------
-- This library defines table_print(tb),table_tostring(tb) for 
-- printing table data
-------------------------------------------------------------------

local function _list_table(tb,table_list,level)
    local ret = ""
    local indent = string.rep(" ",level*4)

    for k,v in pairs(tb) do
        local quo = type(k) == "string" and """ or ""
        ret = ret .. indent .. "[" .. quo .. tostring(k) .. quo .. "] = "

        if type(v) == "table" then
            local t_name = table_list[v]
            if t_name then
                ret = ret .. tostring(v) .. " -- > ["" .. t_name .. ""]n"
            else
                table_list[v] = tostring(k)
                ret = ret .. "{n"
                ret = ret .. _list_table(v,level+1)
                ret = ret .. indent .. "}n"
            end
        elseif type(v) == "string" then
            ret = ret .. """ .. tostring(v) .. ""n"
        else
            ret = ret .. tostring(v) .. "n"
        end
    end

    local mt = getmetatable(tb)
    if mt then 
        ret = ret .. "n"
        local t_name = table_list[mt]
        if t_name then
            ret = ret .. tostring(mt) .. " -- > ["" .. t_name .. ""]n"
        else
            ret = ret .. indent .. "<metatable> = {n"
            ret = ret .. _list_table(mt,level+1)
            ret = ret .. indent .. "}n"
        end
        
    end

   return ret
end

-------------------------------------------------------------------
-- Public functions
-------------------------------------------------------------------

function table_tostring(tb)
    local ret = " = {n"
    local table_list = {}
    table_list[tb] = "Root Table"
    ret = ret .. _list_table(tb,1)
    ret = ret .. "}"
    return ret
end

function table_print(tb)
    if type(tb) ~= "table" then
        error("Sorry,it's not table,it is " .. type(tb) .. ".")
    end
    print(tostring(tb) .. table_tostring(tb))
end

-------------------------------------------------------------------
-- For test
-------------------------------------------------------------------

local test_table_2 = {
    print,}

local test_table_1 = {
    12,22.5,true,infor = {
        name = "Jack",age = 26,lifeexp = {
            ["1986"] = "Both",["2013"] = "Work in Tencet",["2015"] = "Get married"
        },wife = "Lucy"
    },"Hello test",recu_table = test_table_2,["2"] = 13
}

test_table_2.recu_table = test_table_1

local metatable = {
    __index = test_table_2,__add = function(a,b) return 0 end
}

setmetatable(test_table_1,metatable)

function table_test_lib()
    table_print(test_table_1)
end

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读