J'ai un tableau multidimensionnel et je veux trier en fonction de la 'notation' ... mais je veux aussi que l'index commence à 1, ce qui est ce que j'ai utilisé lors de la création manuelle . Quand j'utilise usort il réarrange le tableau mais maintenant ils commencent à l'index 0 donc je ne peux pas faire une boucle de 1 - 6 parce que 6 n'est pas défini après le tri.php Trier un tableau multidimensionnel mais commencer l'index à 1
Il était plus propre de démarrer ma $ array à 1, donc $ player [$ i] représentait ce numéro de joueur. Voici ce que mon tableau ressemble avant de tri
$player[1]['rating'] = 8
$player[2]['rating'] = 5
$player[3]['rating'] = 10
Voici ma fonction de tri:
function sortByrating($a, $b) {
if ($a['rating'] == $b['rating']) {
return 0;
}
return ($a['rating'] < $b['rating']) ? -1 : 1;
}
Et je l'appelle par
usort($player, 'sortByRating');
« Numéro du joueur » qui signifie qu'il ya une association qui devrait être conservée? C'est à dire. celui qui a la clé «1» devrait toujours avoir la clé «1» après le tri, mais cette clé peut être triée ailleurs? Dans ce cas, vous devriez utiliser 'uasort'. - Sinon, si le '1' est juste utilisé pour sortir" 1. ", vous ne devriez pas vous pencher en arrière ici; les tableaux sont indexés à zéro, période, ajoutez '+ 1' pour la sortie visuelle si nécessaire. – deceze
Vous devriez probablement utiliser une boucle 'foreach()' ou démarrer votre boucle 'for()' à partir de 0. – Enstage
Copie possible de [comment changer la clé du tableau pour commencer à partir de 1] (http: // stackoverflow. com/questions/5374202/how-to-change-the-array-key-to-start-from-1-from-of-0) – mickmackusa