En PHP il arrive de se retrouver avec un tableau d’objets qui n’est pas ordonné comme on le voudrait, il faut dans ce cas utiliser la fonction usort qui permet de trier un tableau en utilisant une fonction de comparaison.
Imaginons nous avons un tableau « $list » d’objets « User », contenant -entre autre- les propriétés « Date » et « Name », Date étant un objet DateTime et Name un string
Pour trier par date il faut créer et appeler la fonction suivante (l’exemple peux s’appliquer à n’importe quel tri)
orderByDate($a, $b) {
//retourner 0 en cas d'égalité
if ($a->date == $b->date) {
return 0;
} else if ($a->date < $b->date) {//retourner -1 en cas d’infériorité
return -1;
} else {//retourner 1 en cas de supériorité
return 1;
}
}
//appel de la fonction avec notre tableau $list, $list contiendra ensuite les "User" trié par date.
usort($list, "orderByDate");
Si votre fonction est dans une classe et que vous l’utilisez depuis cette même classe, il faut l’appeler comme ceci :
Dans le cas d’une comparaison de chaine (comme par exemple ici sur le nom) on peux simplifier la syntaxe en utilisant la fonction strcmp de la manière suivante :