PHP 变量是通过值传递还是通过引用传递?
根据 PHP 文档,它是按值计算的。
默认情况下,函数参数通过值传递(因此,如果函数内的参数值发生变化,函数外的参数值也不会发生变化)。要允许函数修改其参数,必须通过引用传递参数。 >; 要使函数的参数始终以引用方式传递,请在函数定义中的参数名称前加上 "&"。
<?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.'
?>
PHP 变量按值赋值,按值传递给函数,当包含/代表对象时,按引用传递。您可以使用一个 &;
值分配/引用的例子:
$var1 = "test";
$var2 = $var1;
$var2 = "new test";
$var3 = &$var2;
$var3 = "final test";
print ("var1: $var1, var2: $var2, var3: $var3);
将输出
var1:测试,var2:最终测试,var3:最终测试
通过值/引用检验:
$var1 = "foo";
$var2 = "bar";
changeThem($var1, $var2);
print "var1: $var1, var2: $var2";
function changeThem($var1, &$var2){
$var1 = "FOO";
$var2 = "BAR";
}
将输出
var1: foo, var2 BAR
通过引用传递的对象变量示例
class Foo{
public $var1;
function __construct(){
$this->var1 = "foo";
}
public function printFoo(){
print $this->var1;
}
}
$foo = new Foo();
changeFoo($foo);
$foo->printFoo();
function changeFoo($foo){
$foo->var1 = "FOO";
}
将输出
FOO
(最后一个例子可能更好......)。