-1
私はすべての位置がオブジェクトである配列を持っています。各オブジェクトは「順序」プロパティを持ち、このプロパティで配列を並べ替える必要があります。配列クラスを注文する最も良い方法は何ですか?
どのような方法が最適ですか?
私は約array_multisort
を見ましたが、ポジションはオブジェクトであり配列ではないため、これはうまく動作しません。
私はすべての位置がオブジェクトである配列を持っています。各オブジェクトは「順序」プロパティを持ち、このプロパティで配列を並べ替える必要があります。配列クラスを注文する最も良い方法は何ですか?
どのような方法が最適ですか?
私は約array_multisort
を見ましたが、ポジションはオブジェクトであり配列ではないため、これはうまく動作しません。
あなたはそのようにそれを行うことができます。
<?php
class OrderedItem
{
public $title;
public $order;
public function __construct($title, $order)
{
$this->title = $title;
$this->order = $order;
}
}
$items = [
new OrderedItem('Title 1.2', 1),
new OrderedItem('Title 3', 3),
new OrderedItem('Title 4', 4),
new OrderedItem('Title 1.1', 1),
new OrderedItem('Title 2', 2),
];
usort($items, function (OrderedItem $i1, OrderedItem $i2) {
return ($i1->order < $i2->order) ? -1 : 1;
});
その結果、$items
配列は次のようになります。
Array
(
[0] => OrderedItem Object
(
[title] => Title 1.1
[order] => 1
)
[1] => OrderedItem Object
(
[title] => Title 1.2
[order] => 1
)
[2] => OrderedItem Object
(
[title] => Title 2
[order] => 2
)
[3] => OrderedItem Object
(
[title] => Title 3
[order] => 3
)
[4] => OrderedItem Object
(
[title] => Title 4
[order] => 4
)
)
「注文」プロパティは、静的メソッドを作成することができますprivate
であるあなたのケースでいる場合オブジェクトクラス内で 'order'プロパティを比較します。あなたはどのように公式の文書でそれを行う例を見つけることができます:http://php.net/manual/en/function.usort.php#example-5639
あなたは私たちにあなたのアレイと必要なO/Pを表示できますか? – Tiger