【问题标题】:Use of increment operator in heredoc在heredoc中使用增量运算符
【发布时间】:2019-02-16 17:30:36
【问题描述】:

我想通过使用 heredoc 中的增量运算符来增加变量的值。我当前的代码如下...

$counter = 0;
for($i = 0; $i<10; $i++):
echo <<< EOT
    $counter++ <br/>
EOT;
endfor;

它的输出是……

0++
0++
.
.

平均后增量运算符不起作用。

我也尝试过预增量,如下所示...

echo <<< EOT
   ++$counter <br/>
EOT;

它的输出是……

++0
++0
.
.

平均预增量运算符也不起作用。

我还尝试将增量操作放在花括号内,如下所示...

echo <<< EOT
    {++$counter} <br/>
EOT;

但还是没有运气。输出是....

{++0} 
{++0} 
.
.

我也在谷歌上搜索过,但没有找到任何有用的东西。

我知道我是否可以在 heredoc 之前增加价值,那么我可以在 here doc 中正确打印它

$counter = 0;
for($i = 0; $i<10; $i++):
++$counter;
echo <<< EOT
    $counter <br/>
EOT;
endfor;

效果很好。

但我想在 heredoc 中使用增量运算符,就像我们在 echo 中使用单引号或双引号一样。

但似乎 heredoc 不支持增量操作。

【问题讨论】:

  • {$var} 实际上只适用于有限的变量访问表达式。 {$countupfunc($counter)} 之类的东西,例如虽然这看起来像是一个抽象的例子,但你不能直接使用$i 吗?
  • 所以,您发现heredoc 不支持递增变量。你有问题吗?
  • 不,我没找到。我现在就猜到了。
  • @mario 我可以使用$i,但正确的名称会增加代码的可读性。

标签: php heredoc


【解决方案1】:

complex/curly variable syntax {$var…} 只允许变量 access 表达式,但不允许 PHP 表达式本身。

  • 例如{$var[…]}
  • {$var(…)}
  • 还有{$var-&gt;prop…}
  • 还有{${stat::$lookup}}

{ + } 本身不能有算术运算符。但只能在[…](…) 之间使用。

一种常见的解决方法是使用变量函数名称:

$func = "htmlspecialchars";  // or any other no-op function
echo <<<HEREDOC
    counter = {$func($counter++)}
HEREDOC;

您可以轻松地在 curly var 语法中使用完整表达式。

【讨论】:

  • “{ + } 本身不能有算术运算符。但只能在 [...] 或 (...) 之间使用。”你能提供任何参考吗?
  • 查看手册链接。虽然这里只是用更多的例子来描述它,但它列出了各种允许的表达式。
猜你喜欢
  • 2017-01-11
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多