What does the “&” sign mean in PHP?
本问题已经有最佳答案,请猛点这里访问。
我试图在谷歌上找到这个答案,但我猜这个符号
1 2 3 4 5 6 7 8 |
这将强制通过引用传递变量。通常,会为简单类型创建一个硬拷贝。这对于大字符串(性能提高)或不使用RETURN语句操作变量非常方便,例如:
1 2 3 4 5 6 7 8 9 10 | $a = 1; function inc(&$input) { $input++; } inc($a); echo $a; // 2 |
对象将自动通过引用传递。
如果要处理函数的副本,请使用
1 | clone $object; |
然后,原始对象不会被更改,例如:
1 2 3 4 | $a = new Obj; $a->prop = 1; $b = clone $a; $b->prop = 2; // $a->prop remains at 1 |
变量前面的和号表示对原始变量的引用,而不是副本或值。
请参见:http://www.phpreferrencebook.com/samples/php-pass-by-reference/
这传递的是引用而不是值。
见:
http://php.net/manual/en/language.references.phphttp://php.net/manual/en/language.references.pass.php
我用它向一个函数发送一个变量,并让函数改变变量。函数完成后,我不需要将函数返回到返回值,并将新值设置为我的变量。
例子1 2 3 4 5 6 7 | function fixString(&$str) { $str ="World"; } $str ="Hello"; fixString($str); echo $str; //Outputs World; |
不带
1 2 3 4 5 6 7 8 | function fixString($str) { $str ="World"; return $str; } $str ="Hello"; $str = fixString($str); echo $str; //Outputs World; |