我有4个不同的对象,但每个对象的日期都有不同的属性。
$obj_one->date_added
$obj_two->date_used
$obj_three->transaction_date
$obj_four->credit_date
我尝试做的是使用array_merge
,然后使用array_multisort
对其进行排序。
现在,如果有两个对象,这是有效的,但是当有4个对象时,我无法找到方法。
这是我用过的两个对象:
$data = array_merge($obj_one, $obj_two);
foreach($data as $key => $row) {
$obj_one_sort[$key] = $row->date_added;
$obj_two_sort[$key] = $row->date_used;
}
array_multisort($obj_one_sort, SORT_ASC, $obj_two_sort, SORT_ASC, $sorted_objects);
有什么想法吗?
编辑:
这就是我最终做到的方式。
$actions = array_merge($object1, $object2, $object3, $object4);
function cmp($a, $b)
{
switch(get_class($a)) {
case 'Object1':
$date_a = $a->date_added;
break;
case 'Object2':
$date_a = $a->credit_date;
break;
case 'Object3':
$date_a = $a->transaction_date;
break;
case 'Object4':
$date_a = $a->date_used;
break;
}
switch(get_class($b)) {
case 'Object1':
$date_b = $b->date_added;
break;
case 'Object2':
$date_b = $b->credit_date;
break;
case 'Object3':
$date_b = $b->transaction_date;
break;
case 'Object4':
$date_b = $b->date_used;
break;
}
if ($date_a == $date_b) {
return 0;
}
return ($date_a < $date_b) ? -1 : 1;
}
usort($actions, "cmp");