3

我正在查看我的一些旧工作,发现 asort 函数可以完美地用于我需要的一些用途,尽管我尝试了一种截然不同且冗长的方式。

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

4

2 回答 2

1

“第三个支点”是内存/阵列中的实际位置。
在以下两个数组上执行 foreach 时,您会清楚地看到它,它们相同,但顺序不同:

$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}";

对这两个数组执行默认排序将导致两种情况:

$x1=array('bbb'=>'bbb','ccc'=>'ccc','mmm'=>'mmm');
$x2=array('bbb'=>'bbb','ccc'=>'ccc','mmm'=>'mmm');
于 2011-02-28T01:11:47.887 回答
1

从手册

asort — 对数组进行排序并保持索引关联

因此,例如:

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

该手册对此处的数组排序功能非常清楚。

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

  • index->​​value 关联是否保持
  • 是否使用自定义函数进行排序
  • 升序或降序
  • 区分大小写
于 2011-02-28T10:25:21.840 回答