是否有任何问题,如果你做排序(&$myArray)


Is there any problem if you do sort(&$myArray)?

PHP手册说你必须做sort($array)$array将被引用传递,因此sort()将修改$myArray

我只是想知道如果你做sort(&$myArray)是否有什么问题或暗示。

给出更详细的答案:

    在PHP 5.3中会触发E_DEPRECATED警告(有时)
  • 很有可能在PHP 5.4停止工作。(它在拒绝和记忆侵犯错误之间交替。尚未最终确定,但这一变化可能会保留。)

不支持引用传递的理由是分散的。它主要是代码整洁。其次,它经常被新手滥用,如果无人监督,会导致副作用。(如果滥用新人是弃用的好理由,那么mysql_query应该早就消失了。)
第三,当ZendVM不期望通过引用传递参数时,实际上存在一些内部内存管理问题。(Quercus和Project Zero没有这样的问题)

简短的回答是不会有什么不同。

长答案是你应该不惜一切代价避免引用。它们是bug的主要来源,你真的不需要它们。在极少数情况下,需要引用来解决问题,但这种情况很少,而且相隔很远。

之所以有这么多引用,是因为在PHP 5.0之前,没有对象引用的概念。因此,您需要通过引用传递所有对象(并通过引用返回它们)来获得任何类型的OO功能(允许修改对象的方法,等等)。但是从5.0版本(10年前的版本)开始,就不再需要了。要了解它现在是如何工作的,我建议阅读这个答案。

的用法更易于维护和正确:

sort($myArray);