downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

Collator::compare> <Collator
[edit] Last updated: Fri, 17 May 2013

view this page in

Collator::asort

collator_asort

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

Collator::asort -- collator_asortSort array maintaining index association

说明

面向对象风格

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

过程化风格

bool collator_asort ( Collator $coll , array &$arr [, int $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

范例

Example #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',
)

参见



add a note add a note User Contributed Notes Collator::asort - [1 notes]
up
0
alix dot axel at NOSPAM dot gmail dot com
2 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
)

 
show source | credits | stats | sitemap | contact | advertising | mirror sites