Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 字符串中的字符串数组_Php_Arrays - Fatal编程技术网

Php 字符串中的字符串数组

Php 字符串中的字符串数组,php,arrays,Php,Arrays,为什么这是一个编译错误: <?php class Bean { public $text = array("123", "456"); public $more = array("000 {$this->text[0]} 000", "--- {$this->text[1]} ---"); } ?> 编译器说PHP解析错误:语法错误,意外' 如何在其他数组中使用我的文本数组?您在该行中的操作: public $more = array("000

为什么这是一个编译错误:

<?php
class Bean
{
    public $text = array("123", "456");
    public $more = array("000 {$this->text[0]} 000", "--- {$this->text[1]} ---");

}

?>

编译器说
PHP解析错误:语法错误,意外'


如何在其他数组中使用我的文本数组?

您在该行中的操作:

public $more = array("000 {$this->text[0]} 000", "--- {$this->text[1]} ---");
在PHP中不起作用

在这里,您可以看到该示例中属性的有效值和无效值。因此,如果您使用双引号,请尝试解析字符串

因此,您必须将您的
替换为
,然后它就可以工作了

public $more = array('000 {$this->text[0]} 000)', '(--- {$this->text[1]} ---)');

例如,您可以在该变量中设置占位符,并在需要它们之前将其替换为
vsprintf

在该行中执行的操作:

public $more = array("000 {$this->text[0]} 000", "--- {$this->text[1]} ---");
在PHP中不起作用

在这里,您可以看到该示例中属性的有效值和无效值。因此,如果使用双引号,请尝试解析字符串

因此,您必须将您的
替换为
,然后它就可以工作了

public $more = array('000 {$this->text[0]} 000)', '(--- {$this->text[1]} ---)');
例如,您可以在该变量中设置占位符,并在需要它们之前将其替换为
vsprintf

您可以执行以下操作:

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

您可以执行以下操作:

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

如前所述,当前版本的php无法(直接)这样做。即使PHP5.6的新功能也不允许这样做,请参见
但我们假设您在这方面有一个有效的intrest,例如,将某些内容保留/分组在类中更具声明性的部分,而不是将其隐藏在一堆代码中,您可以做一些事情(可能“有点”更复杂;-)如


如前所述,当前版本的php无法(直接)做到这一点。即使是PHP5.6的新功能也不允许这样做,请参见
但我们假设您在这方面有一个有效的intrest,例如,将某些内容保留/分组在类中更具声明性的部分,而不是将其隐藏在一堆代码中,您可以做一些事情(可能“有点”更复杂;-)如



第5行应该是
public$more=array(“000{.$this->text[0]。“}000”,“--{.$this->text[1]。“}--”);
这不起作用。我检查了IDEONE,我认为您无法在当前版本的php中使用它。尽管关于“必须是常量值”的一些限制“-规则已在最新的php版本中删除。。。。像这样。。。我不这么认为。请参阅“常量表达式”相同的概念,您应该能够动态填充数组。这是一件很令人费解的事。我想知道为什么这不起作用。第5行应该是
public$more=array(“000{”。$this->text[0]。“}000”,“--{”。$this->text[1]。”}--”这不起作用。我检查了ideoneI,我不认为您可以在当前版本的php中使用它。尽管一些关于“必须是常量值”的限制,但在最新的php版本中已经删除了该规则。。。。像这样。。。我不这么认为。请参阅“常量表达式”相同的概念,您应该能够动态填充数组。这是一件很令人费解的事。我想知道为什么这不起作用。所以基本上我不能在这些字符串中使用变量?
您只能设置标量值。
,这不是真的。数组不是标量,但您仍然可以使用它。是的,很抱歉,它是错误的单词。我试图在文档中找到描述它的部分,但我找不到。因此基本上我不能在这些字符串中使用变量?
您只能设置标量值。
,这是不正确的。数组不是标量,但您仍然可以使用它。是的,很抱歉,它是错误的单词。我试图在文档中找到描述它的部分,但我找不到。这个“稍微复杂一点”的答案很有趣。我在哪里可以找到有关heck%1$s所做工作的文档?
vsprintf
是否可以使用双引号@penu:在PHP文档中搜索
vsprintf
sprintf
。该格式记录在“格式字符串支持参数编号/交换[…]”处/之后。sprintf()和vsprintf()(或任何其他函数?)都不关心单引号或双引号字符串文本。这种魔力发生在函数调用之前,函数本身只得到一个字符串的(内部)表示形式,不管这种表示形式是如何产生的。在最近的一个项目中,我有一点类似……并决定通过代码生成(使用cumstom构建步骤)而不是“在”代码中解决它。它身上有某种代码的味道,但我现在无法确定。。。。。只是一种感觉。这个“稍微复杂一点”的答案很有趣。我在哪里可以找到有关heck%1$s所做工作的文档?
vsprintf
是否可以使用双引号@penu:在PHP文档中搜索
vsprintf
sprintf
。该格式记录在“格式字符串支持参数编号/交换[…]”处/之后。sprintf()和vsprintf()(或任何其他函数?)都不关心单引号或双引号字符串文本。这种魔力发生在函数调用之前,函数本身只得到一个字符串的(内部)表示形式,不管这种表示形式是如何产生的。在最近的一个项目中,我有一点类似……并决定通过代码生成(使用cumstom构建步骤)而不是“在”代码中解决它。它身上有某种代码的味道,但我现在无法确定。。。。。只是一种感觉。