PHP manual says you have to do sort($array)
. $array
will be passed by reference, so sort()
will modify $myArray
.
I'm just wondering if there is any problem or implication if you do sort(&$myArray)
.
PHP manual says you have to do sort($array)
. $array
will be passed by reference, so sort()
will modify $myArray
.
I'm just wondering if there is any problem or implication if you do sort(&$myArray)
.
The short answer is it won't make a difference.
The long answer is that you should avoid references at all cost. They are a major source of bugs, and you really don't need them. There are a few rare occurrences where references are needed to solve a problem, but they are very few and very far between.
The reason there are a lot of references, is prior to PHP 5.0, there was no concept of object references. So you needed to pass all objects by reference (and return them by reference) to get any kind of OO functionality (allow methods to modify the object, etc). But since 5.0 (which is a decade old), that's no longer needed. To understand how it works now, I'd suggest reading this answer.
So do the more maintainable and correct usage:
sort($myArray);
To give a more detailed answer:
The reasoning for deprecating pass-by-references is diffuse. It's mostly code-cleanliness. Secondly it was commonly misused by newcomers, leading to side-effects if unsupervised. (If newcomer misuse ever was a good reason for deprecation, then mysql_query
should have been long gone.)
And thirdly, there are in fact some internal memory management issues with passing parameters by reference when the ZendVM does not expect it. (Quercus and Project Zero do not have such issues.)