Heim  >  Fragen und Antworten  >  Hauptteil

Sortieren Sie ein Array von Objekten basierend auf einer bestimmten Eigenschaft

<p>Wie kann ich dieses Array von Objekten nach einem Feld wie <code>name</code> oder <code>count</code> sortieren? </p> <pre class="brush:php;toolbar:false;">Array ( [0] => stdClass-Objekt ( [ID] => [Name] => [Anzahl] => 420 ) [1] => stdClass-Objekt ( [ID] => [Name] => [Anzahl] => ) [2] => stdClass-Objekt ( [ID] => [Name] => [Anzahl] => 4354 ) ....</pre> <p><br /></p>
P粉426780515P粉426780515397 Tage vor525

Antworte allen(2)Ich werde antworten

  • P粉285587590

    P粉2855875902023-08-22 00:56:43

    这是一种使用闭包的更好的方式

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

    请注意,这不是PHP文档中的内容,但如果您使用的是5.3+版本,支持闭包,可以提供可调用的参数。

    Antwort
    0
  • P粉020085599

    P粉0200855992023-08-22 00:31:39

    使用usort,下面是从手册中改编的示例:

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

    你还可以使用任何可调用作为第二个参数。以下是一些示例:

    • 使用匿名函数(从PHP 5.3开始)

      usort($your_data, function($a, $b) {return strcmp($a->name, $b->name);});
    • 在类内部使用

      usort($your_data, array($this, "cmp")); // "cmp"应该是类中的一个方法
    • 使用箭头函数(从PHP 7.4开始)

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

    另外,如果你要比较数值,fn($a, $b) => $a->count - $b->count作为“比较”函数应该可以解决问题,或者,如果你想以另一种方式做同样的事情,从PHP 7开始你可以使用太空船操作符,像这样:fn($a, $b) => $a->count <=> $b->count

    Antwort
    0
  • StornierenAntwort