En utilisant l'exemple directement à partir des docs, je ne vois pas pourquoi je reçois les résultats que je suis.Usort tableau multidimensionnel en PHP ne fonctionne pas pour moi
function cmp($a, $b)
{
return strcmp($a["fruit"], $b["fruit"]);
}
$fruits[0]["fruit"] = 1000;
$fruits[1]["fruit"] = 600;
$fruits[2]["fruit"] = 2180;
echo ("<pre>");
echo " before \n";
print_r($fruits);
echo ("</pre>");
usort($fruits, "cmp");
echo ("<pre>");
echo " after \n";
print_r($fruits);
echo ("</pre>");
Voici les résultats:
before
Array
(
[0] => Array
(
[fruit] => 1000
)
[1] => Array
(
[fruit] => 600
)
[2] => Array
(
[fruit] => 2180
)
)
after
Array
(
[0] => Array
(
[fruit] => 1000
)
[1] => Array
(
[fruit] => 2180
)
[2] => Array
(
[fruit] => 600
)
)
Je pensais que usort était destiné à organiser la base d'une valeur dans un tableau multidimensionnel. Parfois, il trie, parfois il donne juste un ordre aléatoire en tant que tableau de sortie. Est-ce que je manque quelque chose? Aussi, ce n'est pas une question en double, lisez-le attentivement il n'y a rien de tel sur ce site.
_Qu'il me manque quelque chose? _ Oui, les entiers ne sont pas des chaînes, n'utilisez donc pas de fonction de comparaison de chaînes. – AbraCadaver
Supposez toujours que vous avez initialement tort. Ce n'est pas la fonction usort de PHP qui est cassée; c'est la logique de l'utilisateur dans ce cas. Apprenez à identifier correctement les types et les opérations avec lesquels vous travaillez. Vous comparez les nombres en tant que chaînes et PHP trient ces chaînes de manière appropriée. –