Longhorn PHP 2026 - Call For Papers

Collator::asort

collator_asort

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

Collator::asort -- collator_asortOrdena un array manteniendo la asociación de índices

Descripción

Estilo orientado a objetos

public Collator::asort(array &$array, int $flags = Collator::SORT_REGULAR): bool

Estilo procedimental

collator_asort(Collator $object, array &$array, int $flags = Collator::SORT_REGULAR): bool

Esta función ordena un array de modo que los índices mantengan su correlación con los elementos del array con los que están asociados. Se usa principalmente al ordenar arrays asociativos donde el orden real de los elementos es significativo. Los elementos del array tendrán un orden de clasificación según las reglas de configuración regional actuales.

Equivalente a la función estándar de PHP asort().

Parámetros

object

Objeto Collator.

array

Array de strings a ordenar.

flags

Tipo de ordenación opcional, uno de los siguientes:

El valor por omisión de flags es Collator::SORT_REGULAR. También se usa si se especifica un valor de flags no válido.

Valores devueltos

Esta función retorna true en caso de éxito o false si ocurre un error.

Ejemplos

Ejemplo #1 Ejemplo de collator_asort()

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

collator_asort( $coll, $arr, Collator::SORT_STRING );
var_export( $arr );
?>

El ejemplo anterior mostrará:

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

Ver también

add a note

User Contributed Notes 1 note

up
-1
alix dot axel at NOSPAM dot gmail dot com
15 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