我有一些名为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将"_"解释为字符串文字,而不是变量名称的一部分.
您可以使用花括号来分隔字符串中的变量名称边界(仅限双引号)
$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
复杂(卷曲)语法
可以通过此语法包含具有字符串表示的任何标量变量,数组元素或对象属性.只需以与字符串外部相同的方式编写表达式,然后将其包装在{和}中.由于{无法转义,因此仅当$紧跟{时,才会识别此语法.使用{\ $获取文字{$.一些例子说清楚: