我有以下功能:
public static function CompareGroupReportEntries($a, $b)
{
if ($a->visibility == $b->visibility) {
return 0;
} else{
return $a->visibility < $b->visibility ? 1 : -1;
}
}
它工作正常,我理解它的作用。但是我很难理解它是如何工作的。它在以下行中调用;
usort($reports, "Utilities::CompareGroupReportEntries");
它在循环外部调用,那么它如何设法对数组中的所有对象进行排序?参数$ a和$ b是什么?
感谢帮助。
答案 0 :(得分:1)
答案 1 :(得分:0)
它比较数组的元素以确定它们的位置。
所以$ a和$ b是列表的元素,而且从CompareGroupReportEntries函数的结果可以看出哪个值更大,所以它可以向上或向下移动一个
答案 2 :(得分:0)
函数usort是一个排序函数,它接受一个数组和一个回调函数。这里你的函数CompareGroupReportEntries
是一个回调函数。 PHP并不关心你的数组元素是nubers还是字符串。它期望您的回调函数用于数组值的排序条件。如果你熟悉C,那么有一个quicksort
函数,它也需要一个回调函数