-1
我有一个数组,其中所有的位置都是对象。每个对象都有一个“order”属性,我想通过这个属性来排列数组。订购数组类的最佳方式是什么?
什么是最好的方法?
我看到了约array_multisort
,但这不工作我认为,因为职位是对象,而不是数组。
我有一个数组,其中所有的位置都是对象。每个对象都有一个“order”属性,我想通过这个属性来排列数组。订购数组类的最佳方式是什么?
什么是最好的方法?
我看到了约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