3

为什么这行得通

foreach ($items as $i) {
    $dataTitle = $this->dataTitle;
    $title = $i->$dataTitle;
}

当这没有?

foreach ($items as $i) {
    $title = $i->$this->dataTitle;
}

有一个更好的方法吗?

4

2 回答 2

4

尝试这个:

$title = $i->{$this->dataTitle};

您的表达式被解析为:

$title = ($i->$this)->dataTitle;
于 2013-05-16T05:57:55.460 回答
3

$this指以不明显的顺序解析的当前对象。您需要使用{expr}符号来动态评估属性名称。

尝试使用{}周围$this->dataTitle

$title = $i->{$this->dataTitle};

查看手册变量变量部分中最后一个示例的底部。

于 2013-05-16T05:57:58.310 回答