I have 4 different objects but each have different properties for their dates.
$obj_one->date_added
$obj_two->date_used
$obj_three->transaction_date
$obj_four->credit_date
What I've been trying to do is use array_merge
, then array_multisort
in order to sort them.
Now, this works if there's two objects, but when there's 4 I am unable to find a way to do it.
This is what I've used for two objects:
$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);
Any ideas?
EDIT:
This is how I ended up doing it.
$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");