【问题标题】:Can we do some arithmetic operation within double quotes?我们可以在双引号内做一些算术运算吗?
【发布时间】:2013-08-12 07:21:43
【问题描述】:

我想知道我们是否可以在字符串引号内进行一些算术运算,例如 $x+$y?

// Expected result is:
// 5 + 11 = 16
echo "$x + $y = {$x+$y}"; // Parse error
echo "$x + $y = {$x}+{$y}"; // 5 + 11 = 5+11
echo "$x + $y = ${x+y}"; // 5 + 11 =

【问题讨论】:

  • 为什么需要在引号内?你想达到什么目的?为什么不连接答案? echo "$x + $y = ".($x + $y);
  • stackoverflow.com/questions/12692727/… - 但无论你做什么,都不要让任何人说服你使用 eval()
  • @FDL 我正在尝试将其放入三元运算符中。
  • 你能显示那个代码吗?您仍然可以在三元内使用串联
  • 添加到 Mark Ba​​ker 的评论中,碰巧有一个关于这个网站上的 evils of eval 的问题(嗯,可能是一对)。

标签: php double-quotes


【解决方案1】:

我想知道我们是否可以在字符串引号内进行一些算术运算,例如 $x+$y?

是的,你可以。您可以让 PHP 计算算术运算,然后将其分配给变量并输出。

您也可以在双引号字符串 (Demo) 中执行此操作:

<?php
// @link http://stackoverflow.com/a/18182233/367456
//
// Expected result is:
// 5 + 11 = 16

$x = 5;
$y = 11;

echo "$x + $y = ${0*${0}=$x + $y}"; # prints "5 + 11 = 16"

但这可能不是您想要的。

【讨论】:

  • 哇,太酷了!实际上有一种方法可以做到这一点,尽管它对我来说看起来很复杂。我很想知道${}0*${0} 是如何工作的先生。
  • 方括号允许您提供字符串表达式作为变量名。这里的表达式是0,所以变量是$0(不能不带括号写,否则会是无效的变量名语法)。由于您可以将表达式放在括号中,它还用于将 $x + y$ 的结果分配给 ${0} 变量,然后乘以零得到零(不适用于 INF 或 NAN 计算)。
【解决方案2】:

试试下面的代码:

<?php
    $x =5;
    $y =11;
echo "$x + $y = ".($x+$y);
?>

也可以参考这个Fiddle

【讨论】:

    【解决方案3】:
    echo "$x + $y = ".($x+$y);
    

    你可以这样做。

    【讨论】:

      【解决方案4】:

      使用以下格式,必须喜欢

                      $a=10;$b=12;
                       echo "$a+$b"."=".($a+$b);
      

      【讨论】:

      【解决方案5】:

      你需要这样做,改变下面的行

      echo "$x + $y = {$x}+{$y}"; // 5 + 11 = 5+11
      

      echo "$x + $y = ".($x+$y); // 5 + 11 = 16
      

      【讨论】:

        【解决方案6】:

        您已发布您所需的输出是 // 5 + 11 = 16

        所以你可以试试下面的代码。

        $x = 5;
        $y = 11;
        echo "$x + $y=".($x+$y);
        

        我认为这会给你所需的输出。

        【讨论】:

        • 它甚至在语法上都不正确。 $x 和 $y 不会用单引号计算,等号会导致解析错误,它也需要引号,结果应该连接起来。
        • @RoyalBg 是的,你 100% 正确。当我自己也尝试过时,以前的代码也给出了错误。但现在我已经编辑了我的帖子。现在上面的代码给出了我这边的预期结果。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-22
        • 2017-02-03
        • 2014-01-11
        • 2019-05-13
        • 1970-01-01
        • 2013-03-06
        • 2011-04-30
        相关资源
        最近更新 更多