如果我有一个按日期排序的对象列表,然后使用usort()
按其他属性对它们进行排序,它们是否会在适当时按日期排序?如果不是,我怎么能确定?
usort( $result, function( $a, $b ) {
if( $a['distance'] < $b['distance'] ) {
return -1;
} elseif( $a['distance'] > $b['distance'] ) {
return 1;
} else {
return 0;
}
});
$result
按日期排序,但不再附加表示该日期的属性。 $a['distance']
是一个浮动。
最终实施:
usort( $result, function( $a, $b ) {
if( $a['distance'] < $b['distance'] ) {
return -1;
} elseif( $a['distance'] > $b['distance'] ) {
return 1;
} else {
if( $a['date'] < $b['date'] ) {
return -1;
} elseif( $a['date'] > $b['date'] ) {
return 1;
} else {
return 0;
}
}
});
$a['date']
是一个DateTime对象
答案 0 :(得分:1)
不要认为保留以前的订单(保证)。但是你应该在比较功能中处理它。因此,如果日期相同(或其他方式,不确定您想要什么),只需按日期比较两个项目,然后按其他属性进行比较,这样您就可以按2个标准对数组进行排序。
usort( $result, function( $a, $b ) {
if( $a['distance'] < $b['distance'] ) {
return -1;
} elseif( $a['distance'] > $b['distance'] ) {
return 1;
} else {
// Here don't return 0 but do other comparation by other criteria.
}
});