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 — Сортирај низа задржувајќи ја асоцијацијата на индекс
= NULL
Напиши целосна ознака на елемент
Процедурален стил
Оваа функција сортира низа така што индексите на низата ја задржуваат својата корелација со елементите на низата со кои се поврзани. Ова се користи главно при сортирање на асоцијативни низи каде што редоследот на елементите е значаен. Елементите на низата ќе имаат ред на сортирање според правилата на тековниот локал.
Еквивалентно на стандардното PHP asort().
Параметри
object-
Колатор object.
array-
Низа од низи за сортирање.
flags-
Опционален тип на сортирање, еден од следниве:
-
Collator::SORT_REGULARЗнаменца за типот на споредба: -
Collator::SORT_NUMERIC- спореди ставки нумерички -
Collator::SORT_STRING- спореди ставки како низи
Стандардно
flags. ПримерCollator::SORT_REGULAR. Се користи и ако е специфицирана невалиднаflagsвредност. -
Вратени вредности
Патеката до 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', )
Види Исто така
- Константи на подредувачот
- collator_sort() - Сортирај низа користејќи наведен колатор
- collator_sort_with_sort_keys() - Сортирај низа користејќи наведен колатор и клучеви за сортирање