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
)Collator::asort
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Collator::asort
Референца за `collator.asort.php` со подобрена типографија и навигација.
Collator::asort
collator_asort
Класата Collator
Collator::asort -- collator_asort — Sort array maintaining index association
= NULL
Напиши целосна ознака на елемент
Процедурален стил
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-
Колатор object.
array-
Array of strings to sort.
flags-
Optional sorting type, one of the following:
-
Collator::SORT_REGULARЗнаменца за типот на споредба: -
Collator::SORT_NUMERIC- спореди ставки нумерички -
Collator::SORT_STRING- спореди ставки како низи
Стандардно
flags. ПримерCollator::SORT_REGULAR. It is also used if an invalidflagsvalue has been specified. -
Вратени вредности
Патеката до PHP скриптата што треба да се провери. 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 );
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
array ( 'c' => '7', 'b' => '50', 'a' => '100', )array ( 'a' => '100', 'b' => '50', 'c' => '7', )
Види Исто така
- Колатор constants
- collator_sort() - Сортирај низа користејќи наведен колатор
- collator_sort_with_sort_keys() - Сортирај низа користејќи наведен колатор и клучеви за сортирање