PHP在带有花括号的字符串中嵌入数组元素

我想知道在以下情况下使用
curly大括号的优点是什么:</ p> \ n

  $ world [“foo”] =“Foo World!”; 
echo“你好,{$ world [”foo“]}。
”;
</ code> </ pre>

超过以下内容:</ p>

  $ world [“foo”] =“Foo World!”; 
echo“Hello,$ world [ “foo”]。
“;
</ code> </ pre>

特别是,在这种情况下(或类似情况),大括号如何解决任何
可能的歧义? / p>
</ div>

展开原文

原文

I would like to know what the advantage of using curly braces is in the following context:

$world["foo"] = "Foo World!";
echo "Hello, {$world["foo"]}.
";

is over the following:

$world["foo"] = "Foo World!";
echo "Hello, $world["foo"].
";

In particular, how is it that the braces resolve any possible ambiguity in this case (or similar cases)?

php
duanci19881003
duanci19881003 如果当前给出的答案之一充分回答了您的问题,请接受。
接近 8 年之前 回复
douou1872
douou1872 “你好,{$world[”foo“]}。 ”在语义上等同于“Hello,$world[foo]。 ”。手册解释了这一点。
大约 8 年之前 回复

2个回答



将不会解析第二个示例。 所以首先更好:)</ p>

无论如何,我更喜欢使用</ p>

  echo“Hello”。  $ world [“foo”]。  “。
”;
</ code> </ pre>

因为它更容易向我朗读。</ p>

此外,还有另一种方式 :</ p>

  $ world [“foo”] =“Foo World!”; 
echo“Hello,$ world [foo]。
”;
</ code> </ pre>

没有使用其中一种的方法。 你是你(或你的团队)的样子。</ p>
</ div>

展开原文

原文

Second example will not be parsed. So first is better:)

Anyway, I prefer to use

echo "Hello" . $world["foo"] . ".
";

Because it is more easy to read to me.

Besides, there is another way:

$world["foo"] = "Foo World!";
echo "Hello, $world[foo].
";

There no resaons to use one or another. you what you(or your team) like.

drruhc4944
drruhc4944 你确定? ideone.com/QOzqKM ideone.com/MEhhhv即使有一个也不使用常量
大约 3 年之前 回复
duanjiao5723
duanjiao5723 有点旧,但根据第二个例子,PHP会将foo解释为常量并抛出未定义的常量错误。
大约 3 年之前 回复
dousong2967
dousong2967 我知道括号{}可以用于分组,但我不知道它们也会导致双引号不被转义。 我在哪里可以阅读更多关于在字符串中使用{}的信息(而不是用于分隔代码块)? 谢谢,John Goche
大约 8 年之前 回复
dousuowu4610
dousuowu4610 好的,现在我明白了。 当然,内部双引号对不起作用,因为第二个双引号转义第一个导致语法错误。 通过在括号中包含第二和第三双引号,可以避免这个问题。 (我想另一种解决方案就是用单引号简单地替换第二和第三双引号)。 谢谢,John Goche
大约 8 年之前 回复
duanliao6077
duanliao6077 我绝对讨厌后一个例子。 PHP有足够的不一致性,我们不得不处理。
大约 8 年之前 回复

See the other answers for the "echo" explanation, but if you're using heredoc, such as the following:

echo <<<EOHTML
<td>{$entity['name']}</td>
EOHTML;

You need the curly braces to properly use the associative array.

douguluan5102
douguluan5102 如果在数组键中使用引号字符,他的答案是正确的。 它不是关于运算符优先级; 它与字符串解释有关。 请参阅有关字符串的手册:php.net/manual/en/language.types.string.php
大约 8 年之前 回复
dpcj40970
dpcj40970 我没有说那不会正常工作。 我说过关联数组,这就是你必须要做的。 您的示例不是关联数组。
大约 8 年之前 回复
duanjiaopi8218
duanjiaopi8218 这很奇怪。 不确定你的答案是否真的正确。 方括号,即数组索引操作符,优先级高于美元符号,因此在我看来,花括号不应该是必需的。 正确? 不确定为什么$ sign没有列在php.net/manual/en/language.operators.precedence.php。 无论如何,下面的工作正常:$ a = array(1,2,3,4); echo <<< EOT你好,$ a [0]! EOT;
大约 8 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问