在 PHP 中对对象进行排序

2022-08-30 11:39:18

在PHP中对对象进行排序的优雅方法是什么?我很想完成类似的事情。

$sortedObjectArary = sort($unsortedObjectArray, $Object->weight);

基本上指定我要排序的数组以及要排序的字段。我研究了多维数组排序,那里可能有一些有用的东西,但我没有看到任何优雅或明显的东西。


答案 1

几乎是逐字逐句地从手册中摘录的:

function compare_weights($a, $b) { 
    if($a->weight == $b->weight) {
        return 0;
    } 
    return ($a->weight < $b->weight) ? -1 : 1;
} 

usort($unsortedObjectArray, 'compare_weights');

如果希望对象能够自行排序,请参阅此处的示例 3:http://php.net/usort


答案 2

对于 php >= 5.3

function osort(&$array, $prop)
{
    usort($array, function($a, $b) use ($prop) {
        return $a->$prop > $b->$prop ? 1 : -1;
    }); 
}

请注意,这使用匿名函数/闭包。可能会发现查看php文档很有用。