このオブジェクトの配列を、 または などのフィールドの 1 つで並べ替えるにはどうすればよいでしょうname
かcount
?
Array
(
[0] => stdClass Object
(
[ID] => 1
[name] => Mary Jane
[count] => 420
)
[1] => stdClass Object
(
[ID] => 2
[name] => Johnny
[count] => 234
)
[2] => stdClass Object
(
[ID] => 3
[name] => Kathy
[count] => 4354
)
....
ベストアンサー1
使用並べ替え比較機能をカスタマイズします。以下はマニュアルから引用した例です。
function cmp($a, $b) {
return strcmp($a->name, $b->name);
}
usort($your_data, "cmp");
任意の呼び出し可能2 番目の引数として。次に例をいくつか示します。
使用匿名関数(PHP 5.3 以降)
usort($your_data, function($a, $b) {return strcmp($a->name, $b->name);});
クラスの中から
usort($your_data, array($this, "cmp")); // "cmp" should be a method in the class
使用矢印関数(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
。