【发布时间】:2015-10-12 16:01:50
【问题描述】:
也许我想要的是'太'自定义并且必须手动完成,我认为usort 可以做到但似乎我不完全理解它。按日期降序对节目数组进行排序,但如果日期是当前年份,则将它们放在数组的开头:
usort($show, function($a, $b){
$year = (int) date("Y", time());
$a = $a['date'];
$b = $b['date'];
if ($a === $year) return -1;
if ($b === $year) return -1;
if ($a === $b) return 0;
return ($a > $b) ? -1 : 1;
});
【问题讨论】:
-
这样不行。
usort(与任何其他用户定义的比较函数一样)不声明元素将被比较的严格顺序。解决办法可能是——分两步排序,第一:按日期排序元素(按"year"排序),第二:把当年元素放在开头(按"year == current year"排序)