gpt4 book ai didi

php - 这个 usort cmp 函数实际上是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 04:06:23 25 4
gpt4 key购买 nike

这里有一个答案: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 页面上的文档。它是否对每个元素执行减法?它是否迭代每个数组元素并从其他元素中减去它?只是想解决这个问题。

最佳答案

引用文档,a usortvalue_compare_func 是一个函数:

The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.

在这种情况下,两个日期都转换为 Unix 时间戳,即自纪元以来的秒数。如果 $a 出现在 $b 之前,则自纪元以来的秒数会更少,因此从 $b 中减去它将返回负数。如果它位于$b之后,则两者相减将返回正数,如果它们相同,则减法当然将返回零。

关于php - 这个 usort cmp 函数实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39243553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com