6

我有一个相当大的数组,看起来像

Array(
   [0] => stdClass Object
        (
            [id] => 8585320
            [title] => the title
            [type] => page
            [url] => link.com
            [excerpt] => brief description
        )

    [1] => stdClass Object
        (
            [id] => 8585320
            [title] => the title
            [type] => page
            [url] => link.com
            [excerpt] => brief description
        )
 )

我对数组的形成方式以及它的输出方式没有明显的控制权,似乎它几乎没有任何逻辑。但我坚持下去。所以我需要做的基本上是按每个 stdClass 对象对数组进行数字排序,然后确保 id 是从最大到最小而不是从最小到最大。一直保持数组对象组合的当前结构

我现在什至无法开始思考我需要如何按照我需要的方式对其进行排序。因为它已经足够长的一天了。

更新

public function updateRet($a, $b) {
        return $b->id - $a->id;
    }
usort($ret, 'updateRet');  
4

1 回答 1

12

只需使用usort

function compare_some_objects($a, $b) { // Make sure to give this a more meaningful name!
    return $b->id - $a->id;
}

// ...

usort($array, 'compare_some_objects');

如果你有 PHP 5.3 或更高版本,你也可以使用匿名函数:

usort($array, function($a, $b) { return $b->id - $a->id; });
于 2012-06-21T00:01:41.640 回答