title besides title

 

Thursday, November 8, 2012

PHP : Arrays - [4.20] Sorting an Array Using a Method Instead of a Function

4.20.1 Problem

You want to define a custom sorting routine to order an array. However, instead of using a function, you want to use an object method.

4.20.2 Solution

Pass in an array holding a class name and method in place of the function name:
usort($access_times, array('dates', 'compare'));

4.20.3 Discussion

As with a custom sort function, the object method needs to take two input arguments and return 1, 0, or -1, depending if the first parameter is larger than, equal to, or less than the second:
class pc_sort {
    // reverse-order string comparison
    function strrcmp($a, $b) {
        return strcmp($b, $a);
    }
}

usort($words, array('pc_sort', 'strrcmp'));