Ordering a PHP array of objects by a given property

Published on 2023-05-31 • Modified on 2023-05-31

This snippet shows how to order a PHP array of objects by a given property. The sort function is in the snippet class, but if we want to put the comparison function inside the object class, we can use a static function using the new first-class callable syntax introduced in PHP 8.1.



namespace App\Controller\Snippet;

use App\Samples\SortableObject;

 * I am using a PHP trait to isolate each snippet in a file.
 * This code should be called from a Symfony controller extending AbstractController (as of Symfony 4.2)
 * or Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Services are injected in the main controller constructor.
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(...));


        usort($array, SortableObject::sort(...));

        // That's it! 😁

    public function sortSortableObject(SortableObject $object1, SortableObject $object2): int
        return $object1->name <=> $object2->name;

 Run this snippet  More on Stackoverflow   Read the doc  More on the web  Random snippet

  Work with me!