PHP 8.3.27 Released!

Collator::getSortKey

collator_get_sort_key

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 1.0.3)

Collator::getSortKey -- collator_get_sort_keyПолучает ключ сортировки строки

Описание

Объектно-ориентированный стиль

public Collator::getSortKey(string $string): string|false

Процедурный стиль

collator_get_sort_key(Collator $object, string $string): string|false

Функция возвращает ключ сопоставления для строки. Ключи сопоставления возможно сравнивать напрямую, а не строки, хотя они зависят от реализации и могут меняться в зависимости от версии библиотеки ICU. Ключи сортировки обычно полезны только в базах данных или в других случаях, когда вызовы функций чрезвычайно дороги.

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

object

Объект Collator.

string

Строка, из которой создаётся ключ.

Возвращаемые значения

Функция возвращает ключ сопоставления для строки или 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);

?>

Вывод приведённого примера будет похож на:


3832404046010901dc08

Пример #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);

?>

Вывод приведённого примера будет похож на:


array(3) {
[0] =>
array(2) {
'name' =>
string(25) "🇳🇱 Derick Rethans"
'linked_account' =>
string(33) "https://phpc.social/users/derickr"
}
[1] =>
array(2) {
'name' =>
string(9) "Elephpant"
'linked_account' =>
string(24) "https://phpc.social/phpc"
}
[2] =>
array(2) {
'name' =>
string(25) "🇫🇷 Marcus Bointon"
'linked_account' =>
string(33) "https://phpc.social/users/Synchro"
}
}

Смотрите также

  • collator_sort() - Сортирует массив с использованием указанного средства сортировки
  • collator_sort_with_sort_keys() - Сортирует массив с использованием указанного Collator и ключей сортировки

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top