Trier un tableau d'objets PHP par une propriété donnée
Publié le 31/05/2023 • Actualisé le 31/05/2023
Dans ce morceau de code, nous voyons comment trier un tableau d'objets PHP par une propriété donnée. La fonction de tri est ici présentée dans la classe du snippet, mais si l'on veut la mettre dans la classe de l'objet, on peut utiliser une fonction statique en utilsant la nouvelle syntaxe de fonction de rappel introduite dans PHP 8.1. Celle-ci est bien plus propre et concise que l'ancienne où l'on devait mettre le nom de la fonction à utiliser dans une chaîne. à noter
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
use App\Samples\SortableObject;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*/
trait Snippet257Trait
{
public function snippet257(): void
{
$array = [];
$array[] = new SortableObject('yellow');
$array[] = new SortableObject('blue');
$array[] = new SortableObject('orange');
$array[] = new SortableObject('green');
usort($array, $this->sortSortableObject(...));
var_dump($array);
shuffle($array);
var_dump($array);
usort($array, SortableObject::sort(...));
var_dump($array);
// That's it! 😁
}
public function sortSortableObject(SortableObject $object1, SortableObject $object2): int
{
return $object1->name <=> $object2->name;
}
}
Exécuter le snippet Plus sur Stackoverflow Lire la doc Plus sur le web Snippet aléatoire
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cliquez sur le lien "reply" dans à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et repostez !
- Suivez moi sur Bluesky 🦋
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci et à très bientôt sur Strangebuzz ! 😉
