为什么这是编译错误:
<?php
class Bean
{
public $text = array("123", "456");
public $more = array("000 {$this->text[0]} 000", "--- {$this->text[1]} ---");
}
?>
编译器说PHP Parse error: syntax error, unexpected '"'
如何在其他数组中使用我的文本数组?
答案 0 :(得分:3)
如前所述,你不能(直接)使用当前版本的php。即使是php 5.6的新功能也不允许这样做,请参阅http://php.net/manual/en/migration56.new-features.php
但是,让我们假设你有一个有效的兴趣,例如在类的更具说明性的部分中保留/分组某些内容而不是将其隐藏在一堆代码中,你可以做一些事情(可能是一个&#34; bit&#34;更复杂;-)),如
<?php
class Bean
{
public $text = array("123", "456");
public $more = array('000 %1$s 000', '--- %2$s ---');
public function Bean() {
foreach($this->more as $k=>&$v) {
$v = vsprintf($v, $this->text);
}
}
}
$b = new Bean;
print_r($b->more);
答案 1 :(得分:1)
你在那一行做了什么:
public $more = array("000 {$this->text[0]} 000", "--- {$this->text[1]} ---");
无法使用PHP。
http://php.net/manual/en/language.oop5.properties.php
在这里,您可以看到该示例中属性的有效值和无效值。因此,如果您使用双引号PHP尝试解析字符串。
http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double
因此,您必须将"
替换为'
,然后才能使用
public $more = array('000 {$this->text[0]} 000)', '(--- {$this->text[1]} ---)');
您可以做的是在该变量中设置占位符,然后在需要vsprintf
之前替换它们。
答案 2 :(得分:0)
你可以这样做:
class Bean
{
public $text = array("123", "456");
public function fillMore () {
$more = array();
$more[0] = "000 ".$this->text[0]." 000";
$more[1] = "000 ".$this->text[1]." 000";
var_dump($more);
}
}
$bean = new Bean();
$bean->fillMore();
或者,您也可以尝试在构造函数中填充$more
。
这会在您初始化课程时为您提供$more
。