0
我創建了一個包含多個對象的數組,這些對象有一個startTime和一個endTime。首先我需要最低的開始時間,然後higest結束時間奇怪的使用行爲
array{
[1541] => object(task)#430 (2){ ["startTime"]=> string(19) "2016-03-24 06:29:35" ["endTime"]=> string(19) "2016-03-24 06:31:35"}
[1545] => object(task)#431 (2){ ["startTime"]=> string(19) "2016-03-24 07:20:50" ["endTime"]=> string(19) "2016-03-24 07:25:50"}
}
所以在這個例子中最低的開始時間是「2016年3月24日七點25分50秒」和最高的結束時間將是「2016-03- 24 07:25:50「。但奇怪的是,這不是(總是)結果我得到(3出5次)
the result is lowest startTime is "2016-03-24 07:25:50" and the highest endTime is "2016-03-24 06:29:35"
我命令使用基於開始時間屬性usort這些對象。這裏是TE代碼我使用
class StaticsComponent extends CComponent {
public static function cmp_start($a, $b) {
if (microtime($a->startTime) == microtime($b->startTime)) {
return 0;
}
return (microtime($a->startTime) > microtime($b->startTime)) ? -1 : 1;
}
public static function cmp_end($a, $b) {
if (microtime($a->startTime) == microtime($b->startTime)) {
return 0;
}
return (microtime($a->startTime) < microtime($b->startTime)) ? -1 : 1;
}
}
class OrderBcStats extends Orderbc {
public $tasks;
public $startTime;
public $endTime;
public function process(){
if(empty($this->tasks)){
return;
}
$starts = $this->tasks;
$ends = $this->tasks;
usort($starts, array('StaticsComponent','cmp_start'));
usort($ends, array('StaticsComponent','cmp_end'));
$first = reset($starts);
$last = end($ends);
$this->startTime = $first->startTime;
$this->endTime = $last->endTime;
}
}
附加信息:這是一個Yii的項目,PHP版本5.4.40,OS的Centos,阿帕奇
謝謝你,這是非常明顯的...我打算使用strtotime()函數做比較。 – Tim