【问题标题】:Arithmetic within parsed string解析字符串中的算术
【发布时间】:2021-02-22 14:52:13
【问题描述】:

我正在尝试使用字符串解析对字符串中的变量进行简单的加法,如下所示:

$a = 2;
echo("I have {$a+1} eyes");

但是当我这样做时 PHP 崩溃了。

我也试过{++$a},但输出为I have {++2} eyes

string parsing 的 PHP 手册页没有包含字符串中算术的示例。

这可能吗?

【问题讨论】:

  • 您可以通过串联实现此目的。您是否明确希望使用这样的变量插值来做到这一点?
  • printf("I have %d eyes", $a + 1);
  • 例如你可以做echo("I have " . ($a+1) . " eyes");
  • 是的,我希望变量插值而不是串联,因为我在这里读到插值更快。显然,如果它不是一个选项,我将默认使用连接/格式选项。
  • 不要过早优化。您真的对执行此操作的脚本有性能问题吗?如果答案是否定的,那么不要担心操作的速度。追求代码清晰。关键是插值允许变量,但不允许表达式。

标签: php string


【解决方案1】:

通过变量插值是不可能的。它不接受操作作为参数。它接受的内容可以在this question 中阅读。

替代方案:

  1. 首先将结果存储到变量中。有点多余的步骤,但可以通过插值来实现。
$a = 2;
$b = $a + 1;
echo "I have {$b} eyes";
  1. 使用串联。不要忘记用括号括起来,因为数学运算符的优先级不高于串联。
$a = 2;
echo "I have ".($a + 1)." eyes";
  1. 使用格式打印功能。请注意,printf 输出字符串,而 sprintf 返回字符串,因此您必须显式输出后者。
$a = 2;
printf("I have %d eyes", $a + 1);
echo sprintf("I have %d eyes", $a + 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2015-08-25
    • 2011-10-09
    • 1970-01-01
    • 2010-11-07
    相关资源
    最近更新 更多