在PHP中,如何在两个变量名之间添加下划线

Zio*_*Bit 4 php string

我有一些名为DB的字段

picture1_en
picture2_en
...
picture1_de
picture2_de
...
picture1_it
picture2_it
Run Code Online (Sandbox Code Playgroud)

是的,它本可以用另一种方式实现,但我不能改变实现.

假设我有一个名为$ lang的变量,其中包含"de"或"en"或"it"
现在,如果我想打印该值,我可以使用:

for($i=1; $i<=10; ++$i)
  echo $r["picture$i_$lang"];
Run Code Online (Sandbox Code Playgroud)

问题是PHP将下划线解释为变量名称的一部分(例如,它将其解释为"$ i_").我尝试以很多疯狂的方式逃避下划线,但都没有工作.

当然,我能做到

echo $r["picture".$i."_".$lang];
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法迫使PHP将"_"解释为字符串文字,而不是变量名称的一部分.

Scu*_*zzy 7

您可以使用花括号来分隔字符串中的变量名称边界(仅限双引号)

$r["picture{$i}_{$lang}"];
Run Code Online (Sandbox Code Playgroud)

要么

$r["picture${i}_${lang}"];
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/en/language.types.string.php

复杂(卷曲)语法

可以通过此语法包含具有字符串表示的任何标量变量,数组元素或对象属性.只需以与字符串外部相同的方式编写表达式,然后将其包装在{和}中.由于{无法转义,因此仅当$紧跟{时,才会识别此语法.使用{\ $获取文字{$.一些例子说清楚: