PHP Conference Nagoya 2025

Collator::asort

collator_asort

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

Collator::asort -- collator_asortDiziyi indislerin arasındaki ilişkilere göre sıralar

Açıklama

Nesne yönelimli kullanım

public Collator::asort(array &$dizi, int $sıralama_türü = Collator::SORT_REGULAR): bool

Yordamsal kullanım

collator_asort(Collator $nesne, array &$dizi, int $sıralama_türü = Collator::SORT_REGULAR): bool

Bir diziyi indislerinin arasındaki ilişkilere uygun olarak sıralar. Elemanlarının sıralamasının önem kazandığı yerlerde ilişkisel dizilerin içeriğini sıraya sokmakta kullanılır. Dizi elemanları yerele özgü kurallara göre sıralanır.

PHP'nin standart asort() işlevinin eşdeğeridir.

Bağımsız Değişkenler

nesne

Collator nesnesi.

dizi

Sıralanacak dizgeleri içeren dizi.

sıralama_türü

İsteğe bağlı sıralama türü şunlardan biri olabilir:

Öntanımlı değer Collator::SORT_REGULAR olup geçersiz sıralama türü belirtildiğinde de geçerli olur.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Örnekler

Örnek 1 - collator_asort() örneği

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

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

Yukarıdaki örneğin çıktısı:

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

Ayrıca Bakınız

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