Collator::asort

collator_asort

(No version information available, might be only in CVS)

collator_asort — Sort array maintaining index association

Описание

Object oriented style

bool Collator::asort ( array &$arr [, integer $sort_flag ] )

Procedural style

bool collator_asort ( Collator $coll , array &$arr [, integer $sort_flag ] )

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().

Список параметров

coll

Collator object.

arr

Array of strings to sort.

sort_flag

Optional sorting type, one of the following:

  • Collator::SORT_REGULAR - compare items normally (don't change types)

  • Collator::SORT_NUMERIC - compare items numerically

  • Collator::SORT_STRING - compare items as strings

Default $sort_flag value is Collator::SORT_REGULAR. It is also used if an invalid $sort_flag 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$arrCollator::SORT_NUMERIC );
var_export$arr );

collator_asort$coll$arrCollator::SORT_STRING );
var_export$arr );
?>

Результат выполнения данного примера:

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

Коментарии

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($arraytrue));
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
)
2011-02-20 09:31:15
http://php5.kiev.ua/manual/ru/collator.asort.html

    Поддержать сайт на родительском проекте КГБ