Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Length of nested array lua

I am having trouble figuring out how to get the length of a matrix within a matrix within a matrix (nested depth of 3). So what the code is doing in short is... looks to see if the publisher is already in the array, then it either adds a new column in the array with a new publisher and the corresponding system, or adds the new system to the existing array publisher

output[k][1] is the publisher array output[k][2][l] is the system

where the first [] is the amount of different publishers and the second [] is the amount of different systems within the same publisher

So how would I find out what the length of the third deep array is?

function reviewPubCount()
    local output = {}
    local k = 0
    for i = 1, #keys do
        if string.find(tostring(keys[i]), '_') then
            key = Split(tostring(keys[i]), '_')
            for j = 1, #reviewer_code do
                if key[1] == reviewer_code[j] and key[1] ~= '' then
                    k = k + 1
                    output[k] = {}
                   -- output[k] = reviewer_code[j]
                    for l = 1, k do
                        if output[l][1] == reviewer_code[j] then
                            ltable = output[l][2]
                            temp = table.getn(ltable)
                            output[l][2][temp+1] = key[2]
                        else
                            output[k][1] = reviewer_code[j]
                            output[k][2][1] = key[2]
                        end
                    end
                end
            end
        end
    end
    return output
end

The code has been fixed here for future reference: http://codepad.org/3di3BOD2#output

like image 724
MrPlow254 Avatar asked May 23 '26 12:05

MrPlow254


1 Answers

You should be able to replace table.getn(t) with #t (it's deprecated in Lua 5.1 and removed in Lua 5.2); instead of this:

ltable = output[l][2]
temp = table.getn(ltable)
output[l][2][temp+1] = key[2]

try this:

output[l][2][#output[l][2]+1] = key[2]

or this:

table.insert(output[l][2], key[2])
like image 54
Paul Kulchenko Avatar answered May 25 '26 09:05

Paul Kulchenko