Сортировка массива по количеству символов

Помимо стандартных функций сортировки в PHP есть функции с использованием пользовательских вызовов для сравнения значений и ключей, их можно использовать для упорядочивания массива по количеству символов.

Для подсчета символов рекомендуется использовать mb_strlen() вместо strlen() т.к. в UTF8 strlen() возвращает неправильный результат для русских букв.

1

uksort() – сортирует массив по ключу, используя callback-функцию.

$array = array(
	'ЗИЛ'        => 1,
	'ИЖ'         => 0,
	'Москвич'    => 3,
	'УАЗ'        => 6,
	'Alfa Romeo' => 2,
	'Audi'       => 5,
	'BMW'        => 7,
	'Cadillac'   => 9,
);

function sort_key_strlen($a, $b) {
	return  mb_strlen($a) - mb_strlen($b);
}

uksort($array, 'sort_key_strlen');
print_r($array);
PHP
Array
(
    [ИЖ] => 0
    [ЗИЛ] => 1
    [УАЗ] => 6
    [BMW] => 7
    [Audi] => 5
    [Москвич] => 3
    [Cadillac] => 9
    [Alfa Romeo] => 2
)

Поменять направление сортировки можно изменив callback-функцию:

function sort_key_strlen($a, $b) {
	return  mb_strlen($b) - mb_strlen($a);
}

uksort($array, 'sort_key_strlen');
print_r($array);
PHP

Или перевернуть массив функцией array_reverse():

function sort_key_strlen($a, $b) {
	return  mb_strlen($a) - mb_strlen($b);
}

uksort($array, 'sort_key_strlen');
$array = array_reverse($array);
print_r($array);
PHP
2

По такому же принципу можно отсортировать по значениям, сохраняя ключи массива используя uasort().

$array = array(
	1 => 'ЗИЛ',
	2 => 'ИЖ',
	3 => 'Москвич',
	4 => 'УАЗ',
	5 => 'Alfa Romeo',
	6 => 'Audi',
	7 => 'BMW',
	8 => 'Cadillac',
);

function sort_value_strlen($a, $b) {
	return  mb_strlen($a) - mb_strlen($b);
}

uasort($array, 'sort_value_strlen');
print_r($array);
PHP
Array
(
    [2] => ИЖ
    [1] => ЗИЛ
    [4] => УАЗ
    [7] => BMW
    [6] => Audi
    [3] => Москвич
    [8] => Cadillac
    [5] => Alfa Romeo
)
20.09.2018, обновлено 14.10.2019
4561
Предыдущая запись Сортировка массивов

Комментарии

, чтобы добавить комментарий.

Другие публикации

Поиск похожих текстов в базе данных MySQL + PHP
Один из вариантов поиска похожих статей в базе данных основан на схождении слов в двух текстах.
7223
+6
Поиск файлов в PHP
Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например...
23873
+1
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
18434
+2
Преобразование цветов в PHP
Несколько примеров как перевести цвета из HEX в RGB и обратно с помощью PHP.
15899
-1
Пример парсинга html-страницы на phpQuery
phpQuery – это удобный HTML парсер взявший за основу селекторы, фильтры и методы jQuery, которые позволяют...
62774
+26
Работа с JSON в PHP
JSON (JavaScript Object Notation) – текстовый формат обмена данными, основанный на JavaScript, который представляет собой набор пар {ключ: значение}. Значение может быть массивом, числом, строкой и...
114093
+15