按下面的写法就是引用传递
function func(&$obj) {
}
class A
{
public $v = 1;
}
function change($obj)
{
$obj->v = 2;
}
function makezero($obj)
{
$obj = 0;
}
$a = new A();
change($a);
var_dump($a);
/*
output:
object(A)#1 (1) {
["v"]=>
int(2) // 由于是引用传递,所以值已经被修改
}
*/
makezero($a);
var_dump($a);
/*
output (same as before):
object(A)#1 (1) {
["v"]=>
int(2) // 由于是值传递,所以值没有改变
}
*/
学废了吗?