2016-11-09 1 views
1

i besoin d'aide, sur la façon de remplacer mon array2d avec un autre array1dlua remplacer la valeur array2d avec un autre array1d

exemple array2d, que j'ai

role = {{"mike", "30", "1"}, 
     {"mike", "50", "3"}} 

je veux remplacer la troisième valeur de tableau « rôle [...] [3] "avec ce tableau1d

role_listname = { 
    [1] = "Winner!", 
    [2] = "Funnier!", 
    [3] = "Crazy!" 
} 

donc le résultat obtenu.

1. Winner - 30p 
2. Crazy - 50p 
Not like 
1. Winner - 30p 
2. Funnier - 40p 

mon code:

for i = 1, #role do 
    role[i][3] = role_listname[i] 
    print(i .. ". " .. role[i][3] .. " - " .. role[i][2]) 
end 

je ne sais pas. ça ne marche pas, pourriez-vous me dire comment ça marche?

+0

Je ne suis pas sûr de ce que vous voulez faire, mais votre table role_listname semble vraiment mal. Vous utilisez des chaînes ("1", "2", etc.) comme clés, mais dans votre boucle for vous utilisez des valeurs numériques (1, 2, etc.). Cela fait une différence! – pschulz

+0

oh ouais, j'ai oublié à ce sujet. édité maintenant – Han

Répondre

1

Votre logique est fausse. Vous utilisez la variable de boucle i comme index, mais vous voulez utiliser l'entrée correspondante dans la table de rôle:

role = { 
    {"mike", "30", 1}, 
    {"mike", "50", 3} 
} 
role_listname = { 
    [1] = "Winner!", 
    [2] = "Funnier!", 
    [3] = "Crazy!" 
} 

for i = 1, #role do 
    role[i][3] = role_listname[role[i][3]] -- here is the change 
    print(i .. ". " .. role[i][3] .. " - " .. role[i][2]) 
end 

Notez que j'ai aussi changé les indices dans le tableau de rôle à des valeurs numériques. Mais cela n'a pas vraiment d'importance, vous pouvez utiliser n'importe quelle touche. Ils doivent juste correspondre avec les clés correspondantes dans la table role_listname.

+0

quelle honte, désolé pour ma logique, btw, je suis encore en train d'apprendre. mais merci pour l'aide – Han

+1

Pas de honte à cela. Nous devons tous apprendre! – pschulz