任何人都可以向我解释为什么以下导致语法错误(意外'=')?
protected function processDates()
{
foreach($this->dates as $name => $unitprefix)
{
$this->$unitprefix.'year' = '';
$this->$unitprefix.'month' = '';
$this->$unitprefix.'day' = '';
}
}
Run Code Online (Sandbox Code Playgroud)
显然,我不会将这些值留空,但在继续之前,我需要解决当前的问题.
任何建议表示赞赏
谢谢.
尝试
$this->${$unitprefix.'year'} = '';
Run Code Online (Sandbox Code Playgroud)
但是为了给出更好的建议,知道你的类的属性和$unitprefix
包含的内容会很好.
参考:变量变量
提供更多详细信息:
您编写代码的方式对解析器的代码不清楚.假设$unitprefix = 'foo'
您的代码可以通过两种方式解释:
获取$this->$unitprefix
,即$this->foo
和追加的价值'year'
.然后你的代码将导致(with $this->foo = bar
):
'baryear' = '';
我想这就是解析器正在做的事情,因为这对应于从左到右的代码评估.
追加'year'
到$unitprefix
与所产生的名字获得产权,即所产生的代码是:
$this->fooyear = '';
第二个是你想拥有的beviour,但没有${}
解析器不知道该怎么做.