object var $c->$var1在a类中已被更改;
var $new_var在函数d中没有被修改;我有点困惑。我的英语很差,你能听懂吗?
<?php
class a{
public function test () {
$b = new b;
$c = new c;
$b->test($c);
var_dump($c);
}
}
class b{
public function test($c) {
$c->var1 = 2;
return $c;
}
}
class c {
public $var1 = 1;
}
$a = new a;
$a->test();
function d($new_var) {
$new_var = 2;
return $new_var;
}
$new_var = 1;
d($new_var);
echo $new_var
你的问题是你有这个函数
function d($new_var) {
$new_var = 2;
return $new_var;
}
如果您可能传递一个不同的变量作为参数,但随后您接受该参数并决定将其设置为= 2,然后返回它,这是真的吗?如果你想返回你传递的内容,你应该在
中修改它function d($new_var) {
return $new_var;
}
或者如果你想要类似于b类的测试函数试试tgus
function d($new_var) {
$d->new_var = $new_var;
return $d;
}
所以你可以在返回的对象中访问$new_var $d
您希望下面的代码段将$new_var
的值从1
更改为2
,对吗?
$new_var = 1;
d($new_var);
echo $new_var
唉,这是不可能的,因为返回值永远不会赋给变量。为了确保传递的变量即使在作为参数传递给函数的作用域之外也会保留它的新值,您需要将变量作为引用而不是作为值传递,如下所示:
function d(&$new_var) {
$new_var = 2;
return $new_var;
}
注意函数签名中变量名前面的&符号(&
)。这将导致变量作为引用传递,因此它将保留在函数中对其所做的任何更改。