【问题标题】:PHP object property from class variable? [duplicate]类变量中的PHP对象属性? [复制]
【发布时间】:2013-05-10 21:41:37
【问题描述】:

为什么会这样

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

什么时候没有?

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

有没有更好的方法来做到这一点?

【问题讨论】:

  • 我不认为它完全重复。我不是为了一个而连接的东西。我在想$this->dataTitle 是它自身的一个变量;一个类变量。带着这种想法,我不明白为什么它不起作用。
  • 不过,它涵盖了您应该用于此概念的正确语法。
  • 可能,但仅仅因为两个问题的答案相同并不意味着它们是同一个问题。随意将其标记为关闭,您的选择。我只是评论了为什么我认为它不是重复的。
  • 除了公认的答案之外,还有更多的答案:)

标签: php


【解决方案1】:

试试这个:

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

您的表达式被解析为:

$title = ($i->$this)->dataTitle;

【讨论】:

  • PHP 解析错误:语法错误,意外的 '(',期望标识符 (T_STRING) 或变量 (T_VARIABLE) 或 SimpleList.php 中的 '{' 或 '$'
  • 已修复。 -> 之后的表达式必须在 {} 中。
【解决方案2】:

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

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

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

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

【讨论】:

  • 宾果游戏。虽然为什么是 {} 而不是 ()?我以为 () 是用来按操作顺序对事物进行分组的,这似乎是这里发生的事情?
  • @Justin808 不是群单操作。是属性评估操作。
猜你喜欢
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
相关资源
最近更新 更多