Autres conseils

Comme dit Komel, vous avez affaire à des réseaux associatifs, qui ne sont pas ordonnés garantie.

Si vous voulez commander la clé en fonction de sa valeur associée tout en préservant la fonctionnalité de tableau associatif, vous pouvez faire quelque chose comme ceci:

function getKeysSortedByValue(tbl, sortFunction)
  local keys = {}
  for key in pairs(tbl) do
    table.insert(keys, key)
  end

  table.sort(keys, function(a, b)
    return sortFunction(tbl[a], tbl[b])
  end)

  return keys
end

items = {
    [1004] = "foo",
    [1234] = "bar",
    [3188] = "baz",
    [7007] = "quux",
}

local sortedKeys = getKeysSortedByValue(items, function(a, b) return a < b end)

sortedKeys est {} 1234,3188,1004,7007, et vous pouvez accéder à vos données comme ceci:

for _, key in ipairs(sortedKeys) do
  print(key, items[key])
end

résultat:

1234     bar     
3188     baz     
1004     foo     
7007     quux    

hmm, a raté la partie de ne pas être en mesure de contrôler l'itération. il

Mais en lua il y a généralement toujours un moyen.

http://lua-users.org/wiki/OrderedAssociativeTable

Thats début. Maintenant, vous devrez remplacer les paires () que la bibliothèque utilise. Cela pourrait être une sous forme de paires = simples my_pairs. Vous pouvez ensuite utiliser la solution dans le lien ci-dessus

tableaux PHP sont différents des tables Lua.

  • Un tableau PHP peut avoir un liste ordonnée de paires de valeurs clés.

  • Une table Lua contient toujours un ensemble non ordonné de paires de valeurs clés.

Une table Lua agit comme un tableau quand un programmeur choisit d'utiliser des nombres entiers 1, 2, 3, ... en tant que touches. Les fonctions de syntaxe de la langue et de la bibliothèque standard, comme table.sort offrent un soutien spécial pour les tables avec les touches consécutives entières.

Donc, si vous souhaitez émuler un tableau PHP, vous devrez le représenter en utilisant la liste des paires clé-valeur, ce qui est vraiment une table des tables, mais il est plus utile de penser comme une liste de clés -value paires. Passer une commande « moins que » fonction table.sort et vous serez tous ensemble.

N.B.. Lua vous permet de mix touches consécutives entières avec d'autres types de clés dans la même table et la représentation est efficace. J'utilise cette fonction parfois, le plus souvent de marquer un tableau avec quelques morceaux de métadonnées.

Venir à ce quelques mois plus tard, avec la même requête. La réponse recommandée semblait indiquer exactement l'écart entre ce qui était nécessaire et comment cela ressemble en LUA, mais il ne m'a pas obtenir ce que je cherchais exactement: -. Qui était Hash trié par clé

Les trois premières fonctions de cette page a cependant: http://lua-users.org/wiki/ SortedIteration

Je l'ai fait un bref peu de Lua codage, il y a quelques années, mais je ne suis plus couramment il.

Face à un problème similaire, je copiais mon tableau à un autre tableau avec les touches et les valeurs inversées, puis utilisé sort sur le nouveau tableau.

Je ne savais pas d'une possibilité de trier le tableau selon la méthode Kornel Kisielewicz recommande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top