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_keyGet sorting key for a string

Descrizione

Stile orientato agli oggetti

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

Stile procedurale

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

Return collation key for a string. Collation keys can be compared directly instead of strings, though are implementation specific and may change between ICU library versions. Sort keys are generally only useful in databases or other circumstances where function calls are extremely expensive.

Elenco dei parametri

object

Collator object.

string

The string to produce the key from.

Valori restituiti

Returns the collation key for the string, o false in caso di fallimento.

Avviso

Questa funzione può restituire il Booleano false, ma può anche restituire un valore non-Booleano valutato come false. Fare riferimento alla sezione Booleans per maggiori informazioni. Usare l'operatore === per controllare il valore restituito da questa funzione.

Esempi

Example #1 collator_get_sort_key() example

<?php
$s1
= 'Hello';

$coll = collator_create('en_US');
$res = collator_get_sort_key($coll, $s1);

echo
bin2hex($res);
?>

Il precedente esempio visualizzerà qualcosa simile a:


3832404046010901dc08

Example #2 Collator::getSortKey() example with 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' ],
];

/* Create the collator */
$col = new Collator('en');

/* Sort upper-case letters before lower-case letters */
$col->setAttribute(Collator::CASE_FIRST, Collator::UPPER_FIRST);

/* Use a user-defined function with sort, that strips out the emojis */
*/
usort(
$data,
function(
$a, $b) use ($col) {
/* Remove the character class 'S' (the Symbols), and remove whitespace
* (with trim) */
$aName = trim(preg_replace('/\p{S}+/u', '', $a['name']));
$bName = trim(preg_replace('/\p{S}+/u', '', $b['name']));

/* Create the sort key */
$aKey = $col->getSortKey($aName);
$bKey = $col->getSortKey($bName);

/* Use the sort key to signal which element sorts first */
return $aKey <=> $bKey;
}
);

var_dump($data);
?>

Il precedente esempio visualizzerà qualcosa simile 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"
}
}

Vedere anche:

add a note

User Contributed Notes

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