Dutch PHP Conference 2025 - Call For Papers

Collator::asort

collator_asort

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

Collator::asort -- collator_asortSort array maintaining index association

Опис

Об'єктно-орієнтований стиль

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

Процедурний стиль

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

This function sorts an array such that array indices maintain their correlation with the array elements they are associated with. This is used mainly when sorting associative arrays where the actual element order is significant. Array elements will have sort order according to current locale rules.

Equivalent to standard PHP asort().

Параметри

object

Collator object.

array

Array of strings to sort.

flags

Optional sorting type, one of the following:

Default flags value is Collator::SORT_REGULAR. It is also used if an invalid flags value has been specified.

Значення, що повертаються

Повертає true у разі успіху або false в разі помилки.

Приклади

Приклад #1 collator_asort() example

<?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 );
?>

Поданий вище приклад виведе:

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

Прогляньте також

add a note

User Contributed Notes 1 note

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