PHP 5.6.0 released

Collator::asort

collator_asort

(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)

Collator::asort -- collator_asortTri un tableau en conservant les clés, avec une collation

Description

Style orienté objet

public bool Collator::asort ( array &$arr [, int $sort_flag ] )

Style procédural

bool collator_asort ( Collator $coll , array &$arr [, int $sort_flag ] )

Cette fonction trie un tableau en maintenant l'association entre les clés et les valeurs. Elle sert surtout à trier des tableaux associatifs, où l'ordre des éléments est important. Les éléments seront triés en fonction des conventions locales.

Équivalent de la fonction PHP standard asort().

Liste de paramètres

coll

Objet Collator.

arr

tableau de chaînes à trier.

sort_flag

Type de tri, optionnel, choisi parmi les constantes suivantes :

  • Collator::SORT_REGULAR : compare les éléments normalement (pas de changement de type).

  • Collator::SORT_NUMERIC : compare les éléments numériquement.

  • Collator::SORT_STRING : compare les éléments littéralement.

Le type de tri par défaut est Collator::SORT_REGULAR.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Exemple avec collator_asort()

<?php
$coll 
collator_create'en_US' );
$arr = array(
     
'a' => '100',
     
'b' => '50',
     
'c' => '7'
);
collator_asort$coll$arrCollator::SORT_NUMERIC );
var_export$arr );

collator_asort$coll$arrCollator::SORT_STRING );
var_export$arr );
?>

L'exemple ci-dessus va afficher :

array (
  'c' => '7',
  'b' => '50',
  'a' => '100',
)array (
  'a' => '100',
  'b' => '50',
  'c' => '7',
)

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
0
alix dot axel at NOSPAM dot gmail dot com
3 years ago
For those of you who are looking for a way to integrate natural sorting with the UCA rules this hack seems to work:

<?php

$array
= array
(
   
'1', '100',
   
'al', 'be',
   
'Alpha', 'Beta',
   
'Álpha', 'Àlpha', 'Älpha',
   
'かたかな',
   
'img1.png', 'img2.png',
   
'img10.png', 'img20.png'
);

echo
'<pre>';
print_r(sortIntl($array, true));
echo
'</pre>';

function
sortIntl($array, $natural = true)
{
   
$data = $array;

    if (
$natural === true)
    {
       
$data = preg_replace_callback('~([0-9]+)~', 'natsortIntl', $data);
    }

   
collator_asort(collator_create('root'), $data);

    return
array_intersect_key($array, $data);
}

function
natsortIntl($number)
{
    return
sprintf('%032d', $number);
}

?>

Output:

Array
(
    [0] => 1
    [1] => 100
    [2] => al
    [3] => be
    [4] => Alpha
    [5] => Beta
    [6] => Álpha
    [7] => Àlpha
    [8] => Älpha
    [9] => かたかな
    [10] => img1.png
    [11] => img2.png
    [12] => img10.png
    [13] => img20.png
)
To Top