让PHP回显变量后跟方括号的更好方法是什么?

时间:2014-03-25 16:49:12

标签: php string escaping

我希望PHP回显存储在变量中的字符串,紧接着是一组包含其他文本的方括号。这将进入一个将被发送回PHP的表单,因此PHP需要能够将此命令的输出解释为数组项。

以下是我尝试过的方法:

$var='string';

echo "string[0]"    //works, but only because the variable isn't used

echo "$var[0]";    //PHP tries to treat the string as an array
echo "$var\[0]";    //the slash gets echoed
echo "$var[0\]";    //syntax error

echo "$var"."[0]";   //this is what I'm using now. It's very ugly and I want an alternative

有没有办法在不将字符串分成块并连接它们的情况下完成这项工作?

3 个答案:

答案 0 :(得分:3)

以下两种方式我可以想到在单个输出语句中执行此操作,您选择的最终方式最终将适合您的个人偏好(并且可能还有其他可用的方式):< / p>

printf('%s[0]', $var);

echo $var . '[0]';

答案 1 :(得分:2)

您可以使用大括号语法。来自PHP manual documentation on Strings

  

可以通过此语法包含任何具有字符串表示形式的标量变量,数组元素或对象属性。只需以与字符串外部相同的方式编写表达式,然后将其包装在{}中。由于无法转义{,因此仅当$紧跟{后才会识别此语法。

用大括号括起表达式(如:{$var}),因此PHP知道变量的开始和结束位置。

$var = 'foo';
echo "{$var}[0]"; // => foo[0]

这样,即使变量是带引号的数组索引(例如$var['foo']),也不必担心。

答案 2 :(得分:1)

将变量以大括号语法结尾的位置显式化:

echo "{$var}[0]";