class DownTime {
    public $total, $longest, $count;
}

我有一个关联数组(key是一个id,value是一个停机对象)。
我想按总数分类
我读过关于stackoverflow的PHP: Sorting Arrays和其他一些问题。
我知道这项工作做得很好。但是,作为OOP方法,我更喜欢定义一个特殊的函数(比如在C++中定义uasort,或者在爪哇中实现operator<()),而不是在调用某种排序函数时传递一个函数。

最佳答案

仍然使用该语言时的另一个选项是创建扩展Iterator的迭代器集合类,而不是使用本机数组。
实际上,您也可以扩展ArrayObject并重写sort方法:

class MyArrayObject extends ArrayObject {
    public function natsort() {
        $this->uasort(function($a, $b) {
            return $a->total > $b->total ? 1 : -1;
        });
    }
}

$arrayObject = new MyArrayObject($array);
$arrayObject->natsort();

foreach ($arrayObject as $value) {
    //sorted values
}

或者如果之后确实需要本机数组:
$array = $arrayObject->getArrayCopy();

但我发现在使用迭代器/arrayobjects的地方通常不需要本机数组。
只是类本身比较函数的另一种选择…

10-05 19:12