鍍金池/ 問答/PHP/ 變量引用于類屬性引用的問題

變量引用于類屬性引用的問題

    $a = 1;
    function func( &$a  ){
        echo $a;
        $a = 100;
    }
    func($a);
    echo $a;
    
    class A{
        public $a = 10;
    }
    $obj = new A();
    func($obj->a);
    echo $obj->a;

兩次調(diào)用有什么區(qū)別?

回答
編輯回答
老梗

分開講吧

 $a = 1;
    function func( &$a  ){
        echo $a;
        $a = 100;
    }
    func($a);
    echo $a;

這里傳值寫的是&$a,php是默認(rèn)傳值傳輸,如果你寫的是$a的話,等于就是傳了個(gè)1進(jìn)去。不管里面a怎么變都不影響。echo出來還是1 1 但是傳 &$a的話等于把a(bǔ)的地址丟了進(jìn)去。于是方法內(nèi)部對(duì)a進(jìn)行的操作會(huì)影響a本身,最后echo出來就是1 100

 class A{
        public $a = 10;
    }
    $obj = new A();
    func($obj->a);
    echo $obj->a;

理解了上面以后這個(gè)反而就沒什么花頭了,僅僅只是建立了一個(gè)A的對(duì)象、然后一樣還是把A里面的a丟進(jìn)了方法——由于還是傳地址,所以出來的是10 100.

這段代碼其實(shí)主要展示的是&$a的影響范圍吧……其實(shí)2次調(diào)用并沒什么區(qū)別

2018年7月16日 13:18