Sort array of objects by object fields

后端 未结 19 1560
情书的邮戳
情书的邮戳 2020-11-22 02:28

How can I sort this array of objects by one of its fields, like name or count ?

  Array
(
    [0] => stdClass Object
        (
          


        
19条回答
  •  感情败类
    2020-11-22 02:58

    Use usort, here's an example adapted from the manual:

    function cmp($a, $b) {
        return strcmp($a->name, $b->name);
    }
    
    usort($your_data, "cmp");
    

    You can also use any callable as the second argument. Here are some examples:

    • Using anonymous functions (from PHP 5.3)

        usort($your_data, function($a, $b) {return strcmp($a->name, $b->name);});
      
    • From inside a class

        usort($your_data, array($this, "cmp")); // "cmp" should be a method in the class
      
    • Using arrow functions (from PHP 7.4)

        usort($your_data, fn($a, $b) => strcmp($a->name, $b->name));
      

    Also, if you're comparing numeric values, fn($a, $b) => $a->count - $b->count as the "compare" function should do the trick, or, if you want yet another way of doing the same thing, starting from PHP 7 you can use the Spaceship operator, like this: fn($a, $b) => $a->count <=> $b->count.

提交回复
热议问题