Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php asort是如何工作的?_Php_Arrays_Asort - Fatal编程技术网

Php asort是如何工作的?

Php asort是如何工作的?,php,arrays,asort,Php,Arrays,Asort,我查看了一些我的旧作品,发现asort函数在我需要的一些用途上可以完美地工作,尽管我尝试了一种非常不同和冗长的方式 所以我的问题是,在排序时,asort如何保持关联?我认为数组可以按键或值排序,是否有第三个排序轴?第三个排序轴是内存/数组中的实际位置。 在以下两个相同但顺序不同的数组上执行foreach时,您将清楚地看到这一点: $x1=array('mmm'=>'mmm','bbb'=>'bbb','ccc'=>'ccc'); $x2=array('ccc'=>'ccc

我查看了一些我的旧作品,发现asort函数在我需要的一些用途上可以完美地工作,尽管我尝试了一种非常不同和冗长的方式

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

第三个排序轴是内存/数组中的实际位置。
在以下两个相同但顺序不同的数组上执行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}";
在这两个阵列上执行默认asort将导致以下两种情况:

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

asort-对数组进行排序并维护 索引关联

例如:

  • Asort
    将仅按值进行升序排序,保持索引=>值关联
  • Arsort
    是相同的,但以描述的方式
手册上的内容很清楚

基本函数仅按键或值排序,但有以下选项:
  • 是否维护索引->值关联
  • 是否使用自定义函数进行排序
  • Asc或Desc
  • 是否区分大小写

从上面我可以看到,没有实际的排序,只有2个数组,实际的asort函数是如何发生的?@S1R它根据您定义的参数对数组(键和值一起)进行排序。我认为默认值只是一个字典类型的值。