Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 排序数组类的最佳方法是什么?_Php - Fatal编程技术网

Php 排序数组类的最佳方法是什么?

Php 排序数组类的最佳方法是什么?,php,Php,我有一个数组,其中所有位置都是对象。每个对象都有一个“order”属性,我想用这个属性对数组进行排序 最好的方法是什么 我看到了关于array\u multisort,但我认为这不起作用,因为位置是对象而不是数组。您可以这样做: <?php class OrderedItem { public $title; public $order; public function __construct($title, $order) { $this

我有一个数组,其中所有位置都是对象。每个对象都有一个“order”属性,我想用这个属性对数组进行排序

最好的方法是什么


我看到了关于
array\u 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;
});

如果在您的例子中“order”属性是私有的,那么您可以在对象类中创建一个静态方法来比较“order”属性。您可以在官方文档中找到一个示例:您可以向我们展示您的阵列和您需要的O/p吗?
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
        )

)