想问一下<=>是什么意思?
public function compare($a, $b): int
{
$aDate = new \DateTime($a['date']);
$bDate = new \DateTime($b['date']);
return $aDate <=> $bDate;
}
是不是等于以下这样写?
public function compare($a, $b): int
{
$aDate = new \DateTime($a['date']);
$bDate = new \DateTime($b['date']);
if ($aDate == $bDate) {
return 0;
}
return ($aDate < $bDate) ? -1 : 1;
}
除此之外,还想知道为什么他这样写能做到排序的功能呀?谢谢大神们~
自己查了下资料,并且自己也写代码调试了一下。
发现
return $aDate <=> $bDate;
确实跟以下的写法是一样的:而至于为什么会实现排序,应该是C底层里实现的。现在我只知道当cmp_function返回1的时候,会将$aDate和$bDate的顺序对调(保持索引关联)。
最后顺便提一下,uasort(array &$array, callable $cmp_function) 传入的数组是通过引用传参的,所以调用uasort()时会直接改变原始数组。
这只是我的一点理解,要学习的地方还很多。如果有哪里不对的话希望大神能指点一下~