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_keyObtiene la clave de ordenación para una cadena

Descripción

Estilo orientado a objetos

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

Estilo procedimental

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

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.

Advertencia

Esta función puede retornar false, pero también puede retornar un valor equivalente a false. 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 #1 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

Ejemplo #2 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"
}
}

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top