我正在使用PHP的uasort函数的数组。如果是$a[0]['date'] == $b[0]['date']
,那么我不想排序。
无论如何,我的代码无论如何都会排序。我怎么能阻止它这样做呢?
这是我的阵列:
这是阵列:
Array (
[2764] => Array (
[status] => 0
[0] => Array (
[date] => 2000-01-01
)
[1] => Array (
[date] => 2016-01-16
)
)
[5974] => Array (
[status] => 0
[0] => Array (
[date] => 2000-01-01
)
[1] => Array (
[date] => 2010-12-13
)
)
)
以下是我试图排序的方式:
uasort($arr, function($a, $b)
{
if ($a['status'] == $b['status'])
{
if ($a[0]['date'] == $b[0]['date'])
{
return 0; # I do not want to sort here, but this will sort anyway - why is that so?
}
else
{
return strcmp($a[0]['date'], $b[0]['date']);
}
}
else
{
return $b['status'] - $a['status'];
}
});
如果日期相同,我如何按索引排序?我的意思是按索引2764和5974排序。
答案 0 :(得分:2)
与documentation中一样:
If two members compare as equal, their relative order in the sorted array is undefined.
因此,您必须引入额外的值,例如original_order
并按等号排序。