Collator::getSortKey
En esta página
Collator::getSortKey
collator_get_sort_key
Obtiene la clave de ordenación para una cadena
Descripción#
Estilo orientado a objetos
public Collator::getSortKey(string $string): string
```php
Estilo procedimental
```php
collator_get_sort_key(Collator $object, string $string): string
Devuelve la clave de collation para una cadena. Las claves de collation pueden compararse directamente en lugar de cadenas, no obstante son específicas de la implementación y pueden cambiar entre versiones de la biblioteca ICU. Las claves de ordenación son generalmente útiles solo en bases de datos u otras circunstancias donde las llamadas a funciones son extremadamente costosas.
Parámetros#
object
Objeto Collator.
string
La cadena desde la cual producir la clave.
Valores devueltos#
Devuelve la clave de collation para la cadena, o false si ocurre un error.
[!WARNING] Esta función puede retornar
false, pero también puede retornar un valor equivalente afalse. Por favor, lea la sección sobre los booleanos para más información. Utilice el operador === para probar el valor de retorno exacto de esta función.
Ejemplos#
Ejemplo collator_get_sort_key
<?php
$s1 = 'Hello';
$coll = collator_create('en_US');
$res = collator_get_sort_key($coll, $s1);
echo bin2hex($res);
?>
Resultado del ejemplo anterior es similar a:
3832404046010901dc08
Collator::getSortKey : ejemplo con 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' ],
];
/* Crear el collator */
$col = new Collator('en');
/* Ordenar letras mayúsculas antes que minúsculas */
$col->setAttribute(Collator::CASE_FIRST, Collator::UPPER_FIRST);
/* Utilizar una función definida por el usuario con sort, que elimina los emojis */
usort(
$data,
function($a, $b) use ($col) {
/* Eliminar la clase de caracteres 'S' (Símbolos) y los espacios
* (con trim) */
$aName = trim(preg_replace('/\p{S}+/u', '', $a['name']));
$bName = trim(preg_replace('/\p{S}+/u', '', $b['name']));
/* Crear la clave de ordenación */
$aKey = $col->getSortKey($aName);
$bKey = $col->getSortKey($bName);
/* Utilizar la clave de ordenación para determinar el orden de los elementos */
return $aKey <=> $bKey;
}
);
var_dump($data);
?>
Resultado del ejemplo anterior es similar a:
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"
}
}
Véase también#
collator_sort, collator_sort_with_sort_keys