[ 沒用 & (使用識別符號傳遞) ]
[ pass by identifier(a reference to a reference) ]
class test{ public $v = 123; } function change1($a){ $a->v = 999; } function change2($a){ $a = 222; //不能改變 $a = new test() 這個物件 } $a = new test(); var_dump($a); change1($a); var_dump($a); change2($a); var_dump($a);結果:
object(test)#1 (1) { ["v"]=> int(123) } object(test)#1 (1) { ["v"]=> int(999) } object(test)#1 (1) { //不能改變 $a = new test() 這個物件 ["v"]=> int(999) }
[ 用 & (使用參考傳遞) ]
[ pass by reference ]
class test{ public $v = 123; } function change1(&$a){ $a->v = 999; } function change2(&$a){ //可以改變 $a = new test() 這個物件 $a = 222; } $a = new test(); var_dump($a); change1($a); var_dump($a); change2($a); var_dump($a);結果:
object(test)#1 (1) { ["v"]=> int(123) } object(test)#1 (1) { ["v"]=> int(999) } int(222) //可以改變 $a = new test() 這個物件
參考:
PHP: Passing by Reference - Manual
PHP: Objects and references - Manual
variables - How do you pass objects by reference in PHP 5? - Stack Overflow
沒有留言:
張貼留言