PHP语法错误

Dan*_*Dan 1 php syntax

任何人都可以向我解释为什么以下导致语法错误(意外'=')?

protected function processDates()
  {
       foreach($this->dates as $name => $unitprefix)     
       {
            $this->$unitprefix.'year' = '';   
            $this->$unitprefix.'month' = '';
            $this->$unitprefix.'day' = '';
       }
  }
Run Code Online (Sandbox Code Playgroud)

显然,我不会将这些值留空,但在继续之前,我需要解决当前的问题.

任何建议表示赞赏

谢谢.

Fel*_*ing 8

尝试

$this->${$unitprefix.'year'} = '';
Run Code Online (Sandbox Code Playgroud)

但是为了给出更好的建议,知道你的类的属性和$unitprefix包含的内容会很好.

参考:变量变量

提供更多详细信息:
您编写代码的方式对解析器的代码不清楚.假设$unitprefix = 'foo'您的代码可以通过两种方式解释:

  1. 获取$this->$unitprefix,即$this->foo和追加的价值'year'.然后你的代码将导致(with $this->foo = bar):

    'baryear' = '';
    我想这就是解析器正在做的事情,因为这对应于从左到右的代码评估.

  2. 追加'year'$unitprefix与所产生的名字获得产权,即所产生的代码是:

    $this->fooyear = '';

第二个是你想拥有的beviour,但没有${}解析器不知道该怎么做.