1

我希望在数组中解析变量,所以当我回显 $head['meta_title'] 时,会显示 lol。我试过用双引号括起来,但这似乎也不起作用,有什么办法解决这个问题吗?谢谢!

我得到了意外的 T_VARIABLE 并且当我使用双引号时,我得到了意外的 ""

$meta_title = "lol";

public $head = array
(
    "title"        => "blah",
    "meta_title"   => $meta_title,
    "meta_content" => $meta_content
);
4

3 回答 3

5

您不能使用表达式来初始化类属性。这两个变量的值直到运行时才知道,因此不能在声明中使用。相反,在构造函数中定义它们。

public $head = array
(
    // The title as a string literal is ok...
    "title"        => "blah",
    "meta_title"   => NULL,
    "meta_content" => NULL
);
// Pass them to the constructor as parameters
public function __construct($meta_title, $meta_content)
{ 
  // Initialize them in the constructor. 
  $this->head['meta_title'] = $meta_title;
  $this->head['meta_content'] = $meta_content;
}

从文档

类成员变量称为“属性”。您可能还会看到使用“属性”或“字段”等其他术语来提及它们,但出于本参考的目的,我们将使用“属性”。它们是通过使用关键字 public、protected 或 private 之一定义的,后跟一个普通的变量声明。这个声明可能包括一个初始化,但是这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估。

于 2012-10-23T12:39:40.297 回答
2

如果这是在对象内,则不能以这种方式分配变量。您必须使用 - 方法设置它__construct

于 2012-10-23T12:40:06.210 回答
0

公众需要在 $head 之前移除。我在 PHP Sandbox 中创建了一个示例。

http://sandbox.onlinephpfunctions.com/code/d17bc90e1291f6a3b23537984df755e40446add6

于 2012-10-23T12:42:08.240 回答