[ 沒用 & (使用識別符號傳遞) ]
[ 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
沒有留言:
張貼留言