プロパティによるオブジェクトの配列の並べ替え
オブジェクトの配列は、さまざまなプログラミング シナリオで使用されます。これらのオブジェクトは、名前や数などの複数のプロパティを持っています。特定のプロパティに基づいてこれらのオブジェクトを整理すると、多くの場合便利です。
比較関数のカスタマイズ: usort
PHP には、配列を並べ替えるための usort 関数が用意されています。この関数を使用すると、並べ替えに使用される比較関数をカスタマイズでき、オブジェクトを並べ替えるプロパティを指定できます。
usort の構文は次のとおりです。
usort($array, $compare_function)
ここで、$array はソートされるオブジェクトの配列で、$compare_function は比較を定義する呼び出し可能な関数です。ロジック。
例: オブジェクトを名前で並べ替える
次のオブジェクトの配列を考えます。
$array = [ (object) ['name' => 'Mary Jane', 'count' => 420], (object) ['name' => 'Johnny', 'count' => 234], (object) ['name' => 'Kathy', 'count' => 4354], ... ];
配列を名前で昇順に並べ替えるには次の比較関数を定義します。
function cmp($a, $b) { return strcmp($a->name, $b->name); }
この関数は、次の名前を比較します。 strcmp 関数を使用する 2 つのオブジェクト。$a->name が $b->name より大きい場合は 1、小さい場合は -1、等しい場合は 0 を返します。
最後に、比較関数を使用して usort を呼び出し、配列を並べ替えます:
usort($array, 'cmp');
代替比較オプション
カスタム比較関数の使用に加えて、usort は以下を含む比較ロジックを定義するための他のさまざまな方法をサポートしています。
匿名関数 (PHP) 5.3 ):
usort($array, function($a, $b) { return strcmp($a->name, $b->name); });
クラスメソッド:
usort($array, array($this, "cmp"));
アロー関数 ( PHP7.4 ):
usort($array, fn($a, $b) => strcmp($a->name, $b->name));
数値の並べ替え
カウントなどの数値プロパティを並べ替える場合、spaceship 演算子を使用できます。 (<=>):
usort($array, fn($a, $b) => $a->count <=> $b->count);
以上がPHP でオブジェクトの配列を特定のプロパティで並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。