asort是如何工作的?

时间:2011-02-28 01:07:18

标签: php arrays asort

我正在查看我的一些旧作品,并看到asort函数可以完美地用于我需要的一些用途,尽管我尝试了一种极其不同且漫长的方式。

所以我的问题是,asort如何在排序时保持关联?我以为数组可以按键排序,或者按值排序,是否有第三个排序轴?

2 个答案:

答案 0 :(得分:1)

“第三个轴”是内存/阵列中的实际位置 在对以下两个数组进行操作时,您会清楚地看到它,它们是相同的,但具有不同的顺序:

$x1=array('mmm'=>'mmm','bbb'=>'bbb','ccc'=>'ccc');
$x2=array('ccc'=>'ccc','bbb'=>'bbb','mmm'=>'mmm');

foreach($x1 as $k=>$v) echo "{$k} {$v}";
foreach($x2 as $k=>$v) echo "{$k} {$v}";

在这两个数组上执行默认的asort将导致以下两种情况:

$x1=array('bbb'=>'bbb','ccc'=>'ccc','mmm'=>'mmm');
$x2=array('bbb'=>'bbb','ccc'=>'ccc','mmm'=>'mmm');

答案 1 :(得分:1)

From the manual

  

asort - 对数组进行排序并进行维护   指数协会

所以,例如:

  • Asort将按升序排序,保持index =>值关联。
  • Arsort是相同的但是以desc方式。

手册在Array sorting function here上非常清楚。

基本功能仅按键或值排序,但有选项:

  • index->值关联是否维持
  • 使用自定义功能进行排序
  • Asc或Desc
  • 区分大小写