解决方案:

取决于版本,PHP 4是按值,PHP5是按引用。

PHP变量按值分配,按值传递给函数,包含/表示对象时按引用传递。我们可以使用&强制变量按引用传递

通过值/引用赋值示例:

$var1 = "test";
$var2 = $var1;
$var2 = "new test";
$var3 = &$var2;
$var3 = "final test";

print ("var1: $var1, var2: $var2, var3: $var3);

将输出

var1: test, var2: final test, var3: final test

通过值/引用进行传递参数实例:

$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
PHP变量是按值还是按引用传递?
日期:2020-03-23 20:19:59 来源:oir作者:oir