среда, 23 ноября 2011 г.

PHP: сортировка массива по длине элементов

В оригинале, функция usort() принимает вторым параметром имя callback-функции. Но в PHP 5.3 удобнее использовать замыкание, особенно если сортировка используется, например, в методе какого-либо класса.
$arr = array('aaaaaaa', 'bbbb', 'cccc', 'dd', 'eeeee', 'fff');

print_r($arr);

usort($arr,
        function($a, $b) {
            return ($a == $b) ? 0 :
                ((strlen($a) < strlen($b)) ? -1 : 1);
        });

print_r($arr);


Результат в браузере:
Array
(
    [0] => aaaaaaa
    [1] => bbbb
    [2] => cccc
    [3] => dd
    [4] => eeeee
    [5] => fff
)
Array
(
    [0] => dd
    [1] => fff
    [2] => bbbb
    [3] => cccc
    [4] => eeeee
    [5] => aaaaaaa
)

1 комментарий:

  1. Рекомендую почитать про замыкания и узнать, что замыкания != анонимные функции

    ОтветитьУдалить

Спасибо за ваш комментарий!