在PHP中通过引用传递(函数定义和变量)


Passing by reference in PHP (function definition and variables)

函数&foo()和函数foo(&$var)?

代码示例:

<?php
function foo(&$var){
   $var++;
}
function &bar(){
   $a= 5;
   return $a;
}
foo( bar() );

这里的主要问题是谁想更改或读取谁的变量。在第一个示例中,您希望函数更改外部变量。在示例2中,您希望外部世界更改内部变量。您可以从不同的范围中获得更改后的值。

第二个版本的一个更好的用例是:

class example {
    public $test = 23;
    public function &exposeTest() {
        return $this->test;
    }
}
$example1 = new example;
$testref = &$example1->exposeTest();
$testref++;
echo($example1->test); // 24
$example1->test++;
echo($testref); // 25

因此,除了设计问题之外,这并不是什么真正的区别,没有OOP可能也无关紧要。