Как работают функции сравнения массивов PHP? - PullRequest
1 голос
/ 19 мая 2011

У меня есть следующая функция:

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 ]

1 голос
/ 19 мая 2011
0 голосов
/ 19 мая 2011

Функция usort является функцией сортировки, которая принимает массив и функцию обратного вызова. здесь ваша функция CompareGroupReportEntries является функцией обратного вызова. PHP не волнует, являются ли ваши элементы массива нуберами или строками. он ожидает вашу функцию обратного вызова для критериев сортировки значений вашего массива. Если вы знакомы с C, то есть функция quicksort, которая также принимает функцию обратного вызова

0 голосов
/ 19 мая 2011

сравнивает элементы массива, чтобы определить их положение.

, поэтому $ a и $ b относятся к элементам списка, а из результата функции CompareGroupReportEntries можно сказать, какое значение больше,так что он может переместить его вверх или вниз

...