Maison > Questions et réponses > le corps du texte
P粉2855875902023-08-22 00:56:43
C'est une meilleure façon d'utiliser les fermetures
usort($your_data, function($a, $b) { return strcmp($a->name, $b->name); });
Veuillez noter que cela ne figure pas dans la documentation PHP, mais si vous utilisez la version 5.3+, les fermetures sont prises en charge et vous pouvez fournir des paramètres appelables.
P粉0200855992023-08-22 00:31:39
En utilisant usort, voici un exemple adapté du manuel :
function cmp($a, $b) { return strcmp($a->name, $b->name); } usort($your_data, "cmp");
Vous pouvez également utiliser n'importe quel callable comme deuxième argument. Voici quelques exemples :
Utilisez des fonctions anonymes (à partir de PHP 5.3)
usort($your_data, function($a, $b) {return strcmp($a->name, $b->name);});
Utilisé à l'intérieur de la classe
usort($your_data, array($this, "cmp")); // "cmp"应该是类中的一个方法
Utilisez les fonctions fléchées (à partir de PHP 7.4)
usort($your_data, fn($a, $b) => strcmp($a->name, $b->name));
De plus, si vous souhaitez comparer des valeurs numériques, fn($a, $b) => $a->count - $b->count
comme fonction de "comparaison" devrait résoudre le problème, Alternativement, si vous souhaitez faire la même chose d'une autre manière, en commençant par PHP 7, vous pouvez utiliser Opérateur de vaisseau spatial fn($a, $b) => $a->count - $b->count
作为“比较”函数应该可以解决问题,或者,如果你想以另一种方式做同样的事情,从PHP 7开始你可以使用太空船操作符,像这样:fn($a, $b) => $a->count <=> $b->count
, comme ceci : fn($a, $b) => $a->count <=> $ b ->compte
.