我发现在使用sort()函数时,我可以这样使用它:
sort($myArray);
和$myArray
已排序。但是当我像这样使用array_reverse时:
array_reverse($myArray);
阵列没有反转。为了让它工作,我必须这样做:
$myArray = array_reverse($myArray);
在想知道为什么他们的array_reverse没有工作之前,人们已经发布了问题,而且正因为如此。
我想知道,为什么这两个函数的行为不同(它是否与传递引用有关),并且php不会尝试标准化吗?
答案 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文档加入书签以便在以下情况下快速参考:)