【问题标题】:Better way to make PHP echo a variable followed by square brackets?使 PHP 回显变量后跟方括号的更好方法?
【发布时间】:2014-05-03 16:30:50
【问题描述】:

我希望 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

有什么方法可以在不将字符串分成块并将它们连接起来的情况下完成这项工作?

【问题讨论】:

  • 把变量放在花括号里:echo "{$var}[0]";

标签: php string escaping


【解决方案1】:

这是我能想到的在单个输出语句中执行此操作的前两种方法,您选择的最终将是最符合您个人喜好的方法(可能还有其他可用的方法):

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

echo $var . '[0]';

【讨论】:

    【解决方案2】:

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

    任何标量变量、数组元素或具有字符串表示的对象属性都可以通过此语法包含在内。只需像在字符串外出现的那样编写表达式,然后将其包装在{} 中。由于{ 无法转义,因此只有当$ 紧跟{ 时才会识别此语法。

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

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

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

    【讨论】:

    • 他想打印string[0]。他想要$var,而不是$var[0]
    • @RocketHazmat:已更新。
    【解决方案3】:

    明确变量以花括号语法结尾的位置:

    echo "{$var}[0]";
    

    【讨论】:

      猜你喜欢
      • 2014-04-06
      • 2010-12-12
      • 2021-08-22
      • 1970-01-01
      • 2014-02-21
      • 2015-09-30
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多