PHP数组无法正确接受变量

时间:2014-07-07 16:50:42

标签: php arrays

我在PHP中有一个数组,其中一些输入只是文字字符串,而一个输入插入了一个变量。我收到的错误是“#34;语法错误,意外"",期待')'在66号线和34号线上。这对我来说没有意义,因为它只是一个字符串数组,我还没有关闭数组或做任何时髦的事情。

这是我的代码。

private $headerLink;

private $header = array(
    "<header>",
    "\t\t<h1><a href=$headerLink>Daily Drop</a></h1>",
    "\t</header>"
);

$ headerLink在构造函数中初始化,因此它不是因为它是空的。我甚至尝试将其设置为&#34; test&#34;确保它不是,但它不起作用。

有谁知道导致此错误的原因以及如何修复它?

非常感谢!

2 个答案:

答案 0 :(得分:4)

必须使用固定/常量值初始化对象属性。它们不能是表达的结果:

private $foo = 'bar'; // ok.
private $bar = 'baz' . 'qux'; // bad, this is an expression
private $baz = 'foo' . $foo;
// also bad - expression + undefined variable, should be $this->foo anyways

在你的情况下:

php > class foo { private $foo = array('foo', $bar, 'baz'); }
PHP Parse error:  syntax error, unexpected T_VARIABLE, expecting ')' in php shell code on line 1
php > class foo { private $foo = array('foo', 'bar', 'baz'); }
php >

答案 1 :(得分:0)

初始化变量时,不能使用表达式并使用其他变量。

但是如果你想使用$header设置$headerLink值,你可以将一些代码移动到构造函数。

你可以这样做:

private $header = array(
    "<header>",
    "\t\t<h1><a href=[header_link]>Daily Drop</a></h1>",
    "\t</header>"
);

public function _construct() {
    // here other constructor tasks  
    $this->header[1] = str_replace('[header_link]', $this->$headerLink, $this->header[1]);
}

然而,最好的解决方案可能是创建新方法,然后:

private $header;

public function _construct() {
    // here other constructor tasks  
    $this->setHeader($this->headerLink);

}

private function setHeader($headerLink) {
    $this->header = array(
        "<header>",
        "\t\t<h1><a href=$headerLink>Daily Drop</a></h1>",
        "\t</header>"
    );
}