Trier un tableau d'objets en fonction d'une propriété spécifique
P粉426780515
2023-08-21 15:57:31
<p>Comment puis-je trier ce tableau d'objets par un champ tel que <code>name</code> ou <code>count</code> ? </p>
<pre class="brush:php;toolbar:false;">Array
(
[0] => Objet stdClass
(
[ID] => 1
[nom] =>
[compte] => 420
)
[1] => Objet stdClass
(
[ID] =>
[nom] =>
[compte] =>
)
[2] => Objet stdClass
(
[ID] => 3
[nom] =>
[compte] => 4354
)
....</pré>
<p><br /></p>
C'est une meilleure façon d'utiliser les fermetures
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.
En utilisant usort, voici un exemple adapté du manuel :
Vous pouvez également utiliser n'importe quel callable comme deuxième argument. Voici quelques exemples :
Utilisez des fonctions anonymes (à partir de PHP 5.3)
Utilisé à l'intérieur de la classe
Utilisez les fonctions fléchées (à partir de PHP 7.4)
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 spatialfn($a, $b) => $a->count - $b->count
作为“比较”函数应该可以解决问题,或者,如果你想以另一种方式做同样的事情,从PHP 7开始你可以使用太空船操作符,像这样:fn($a, $b) => $a->count <=> $b->count
, comme ceci :fn($a, $b) => $a->count <=> $ b ->compte
.