(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 1.0.3)
Collator::getSortKey -- collator_get_sort_key — Получает ключ сортировки строки
Объектно-ориентированный стиль
Процедурный стиль
Функция возвращает ключ сопоставления для строки. Ключи сопоставления возможно сравнивать напрямую, а не строки, хотя они зависят от реализации и могут меняться в зависимости от версии библиотеки ICU. Ключи сортировки обычно полезны только в базах данных или в других случаях, когда вызовы функций чрезвычайно дороги.
Функция возвращает ключ сопоставления для строки или false, если возникла ошибка.
Функция
возвращает как логическое значение false,
так и нелогическое значение, которое приводится к false.
Прочитайте раздел
«Логический тип»,
чтобы получить дополнительную информацию.
Используйте оператор ===
для проверки значения, которое возвращает функция.
Пример #1 Пример получения ключа сортировки строки функцией collator_get_sort_key()
<?php
$s1 = 'Hello';
$coll = collator_create('en_US');
$res = collator_get_sort_key($coll, $s1);
echo bin2hex($res);
?>Вывод приведённого примера будет похож на:
Пример #2 Пример работы метода Collator::getSortKey() с функцией usort()
<?php
$data = [
[ 'name' => '🇳🇱 Derick Rethans', 'linked_account' => 'https://phpc.social/users/derickr' ],
[ 'name' => 'Elephpant', 'linked_account' => 'https://phpc.social/phpc' ],
[ 'name' => '🇫🇷 Marcus Bointon', 'linked_account' => 'https://phpc.social/users/Synchro' ],
];
/* Создаём объект Collator */
$col = new Collator('en');
/* Определяем порядок сортировки: заглавные варианты символов идут перед строчными. */
$col->setAttribute(Collator::CASE_FIRST, Collator::UPPER_FIRST);
/* Сортируем данные пользовательской функцией, которая также удаляет эмодзи */
usort(
$data,
function($a, $b) use ($col) {
/* Указываем идентификатор 'S', который удалит символы Юникод-класса Symbols, и удаляем пробельные символы
* в начале и конце строки функцией trim */
$aName = trim(preg_replace('/\p{S}+/u', '', $a['name']));
$bName = trim(preg_replace('/\p{S}+/u', '', $b['name']));
/* Создаём ключи сортировки */
$aKey = $col->getSortKey($aName);
$bKey = $col->getSortKey($bName);
/* Сравниваем ключи, чтобы определить порядок элементов. */
return $aKey <=> $bKey;
}
);
var_dump($data);
?>Вывод приведённого примера будет похож на: