Are PHP Variables passed by value or by reference?

cmcculloh picture cmcculloh · Aug 4, 2008 · Viewed 173.8k times · Source

Are PHP variables passed by value or by reference?

Answer

Michael Stum picture Michael Stum · Aug 4, 2008

It's by value according to the PHP Documentation.

By default, function arguments are passed by value (so that if the value of the argument within the function is changed, it does not get changed outside of the function). To allow a function to modify its arguments, they must be passed by reference.

To have an argument to a function always passed by reference, prepend an ampersand (&) to the argument name in the function definition.

<?php
function add_some_extra(&$string)
{
    $string .= 'and something extra.';
}

$str = 'This is a string, ';
add_some_extra($str);
echo $str;    // outputs 'This is a string, and something extra.'
?>