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的地方通常不需要本机数组。
只是类本身比较函数的另一种选择…