在我的PHP课程中我有
public $a;
public $b;
public $c;
public $d;
我在构造中设置了值。
我现在正在尝试编写一个更新函数,我正在尝试检查它们是否正在更新,比如$ a,与它是一样的。
function update($what, $to) {
if ($to == $this->what) return false;
...
}
$updated = $instance->update($a, "Foobar");
if ($updated) echo "Updated";
else echo "You didn't change the value";
但是因为我知道这一行
if ($to == $this->what) return false;
无效,我正在寻找一种新的方法来写它。
想法?
提前致谢
答案 0 :(得分:2)
解决您的困境的方法是变量变量。您的更新功能必须像这样分配:
$this->{$what} = $to;
if-check将相应地:
if ($to == $this->{$what}) return false;
并且您实际上无法使用变量$a
调用update()方法。你必须给它一个变量名称作为字符串:
$instance->update("a", "Foobar");
答案 1 :(得分:1)
您可以执行以下操作:
if ($to == $this->$what) return false;
并称之为:
update("a", "Foobar");
这使用变量变量(http://php.net/manual/en/language.variables.variable.php)。
您也可以通过引用传递:
function update(&$what, $to) {
if ($to == $what) return false;
...
}
并像你在你的例子中那样称呼它。
答案 2 :(得分:0)
$this->$what
, $what = 'a'
应该可以解决问题
你通常想避免这样做。