数组排序和反转行为

时间:2014-06-11 20:37:18

标签: php arrays sorting

我发现在使用sort()函数时,我可以这样使用它:

sort($myArray);

$myArray已排序。但是当我像这样使用array_reverse时:

array_reverse($myArray);

阵列没有反转。为了让它工作,我必须这样做:

$myArray = array_reverse($myArray);

在想知道为什么他们的array_reverse没有工作之前,人们已经发布了问题,而且正因为如此。

我想知道,为什么这两个函数的行为不同(它是否与传递引用有关),并且php不会尝试标准化吗?

1 个答案:

答案 0 :(得分:2)

它们的行为不同,因为在sort$myArray变量通过引用传递,这意味着变量本身是在操作的,而在array_reverse()中变量不是通过引用传递的。你可以使用array_reverse(&$myArray)模拟这种行为虽然请注意,从PHP 5.3.0开始,不推荐使用引用传递的调用时间,并且它已在PHP 5.4.0中完全删除了

至于为什么,我不知道。有些人在他们的无限智慧中决定,当你排序时,你必须要对实际数组进行排序,但是当你反向时,你必须要将它保存到一个新的数组变量。

在此处阅读有关通过引用传递的更多信息:http://www.php.net//manual/en/language.references.pass.php

PHP中有很多奇怪的东西。这就是为什么我将PHP文档加入书签以便在以下情况下快速参考:)