PHP数组比较函数如何工作?

时间:2011-05-19 11:25:16

标签: php arrays sorting multidimensional-array comparison

我有以下功能:

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是什么?

感谢帮助。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

它比较数组的元素以确定它们的位置。

所以$ a和$ b是列表的元素,而且从CompareGroupReportEntries函数的结果可以看出哪个值更大,所以它可以向上或向下移动一个

答案 2 :(得分:0)

函数usort是一个排序函数,它接受一个数组和一个回调函数。这里你的函数CompareGroupReportEntries是一个回调函数。 PHP并不关心你的数组元素是nubers还是字符串。它期望您的回调函数用于数组值的排序条件。如果你熟悉C,那么有一个quicksort函数,它也需要一个回调函数