这里有一个答案:Combine two array and order this new array by date
它解释了如何合并两个数组,然后按日期排序。
function cmp($a, $b){
$ad = strtotime($a['date']);
$bd = strtotime($b['date']);
return ($ad-$bd);
}
$arr = array_merge($array1, $array2);
usort($arr, 'cmp');
解决方案看起来很优雅,但我对此感到困惑
return ($ad-$bd);
我的意思是没有比较运算符,它只是减去
function newFunc($a, $b) {
return($a-$b);
}
echo newFunc(5,3);
返回2
那么这实际上如何表明如何对数组进行排序?
更新
我按照建议进一步阅读了usort页面上的文档。它是否对每个元素执行此减法操作?它是否遍历每个数组元素并从其他元素中减去它?试图绕过这个。
答案 0 :(得分:2)
答案 1 :(得分:2)
引用文档时,usort
value_compare_func
的功能是:
如果第一个参数被认为分别小于,等于或大于第二个参数,则比较函数必须返回小于,等于或大于零的整数。
在这种情况下,两个日期都被转换为Unix时间戳,即自纪元以来的秒数。如果$a
在$b
之前出现,则自纪元以来它的秒数会减少,因此从$b
中减去它将返回一个负数。如果它出现在$b
之后,减去两个将返回一个正数,如果它们相同,则减法当然会返回零。