开发者

What does the "&" sign mean in PHP? [duplicate]

开发者 https://www.devze.com 2022-12-23 01:23 出处:网络
This question already has answers here: 开发者_Python百科 Reference — What does this symbol mean in PHP?
This question already has answers here: 开发者_Python百科 Reference — What does this symbol mean in PHP? (24 answers) Closed 9 years ago.

I was trying to find this answer on Google, but I guess the symbol & works as some operator, or is just not generally a searchable term for any reason.. anyhow. I saw this code snippet while learning how to create WordPress plugins, so I just need to know what the & means when it precedes a variable that holds a class object.

//Actions and Filters
if (isset($dl_pluginSeries)) {

    //Actions
    add_action('wp_head', array(&$dl_pluginSeries, 'addHeaderCode'), 1);
    //Filters
    add_filter('the_content', array(&$dl_pluginSeries, 'addContent'));
}


This will force the variable to be passed by reference. Normally, a hard copy would be created for simple types. This can come handy for large strings (performance gain) or if you want to manipulate the variable without using the return statement, eg:

$a = 1;

function inc(&$input)
{
   $input++;
}

inc($a);

echo $a; // 2

Objects will be passed by reference automatically.

If you like to handle a copy over to a function, use

clone $object;

Then, the original object is not altered, eg:

$a = new Obj;
$a->prop = 1;
$b = clone $a;
$b->prop = 2; // $a->prop remains at 1


The ampersand preceding a variable represents a reference to the original, instead of a copy or just the value.

See here: http://www.phpreferencebook.com/samples/php-pass-by-reference/


This passes something by reference instead of value.

See:

http://php.net/manual/en/language.references.php
http://php.net/manual/en/language.references.pass.php


I used it for sending a variable to a function, and have the function change the variable around. After the function is done, I don't need to return the function to the return value and set the new value to my variable.

Example

function fixString(&$str) {
    $str = "World";
}

$str = "Hello";
fixString($str);
echo $str; //Outputs World;

Code without the &

function fixString($str) {
    $str = "World";
    return $str;
}

$str = "Hello";
$str = fixString($str);
echo $str; //Outputs World;
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号