php - 将 echo 和 print 组合在一个语句中

标签 php syntax

回显“1”。 (print '2') + 3; 返回 214。脚本如何以 *14 结尾?

最佳答案

当你这样做的时候

echo "1" . (print '2') + 3;

PHP 会做 ( demo )

line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   PRINT                                            ~0      '2'
         1      CONCAT                                           ~1      '1', ~0
         2      ADD                                              ~2      ~1, 3
         3      ECHO                                                     ~2
         4    > RETURN                                                   1

言外之意:

  • 打印2,返回1
  • 将“1”与返回的 1 连接起来 => “11”
  • 添加“11”+ 3 => 14
  • echo 14

那是 214。

运算符 + - . 等于 Operator Precedence , 但左结合:

For operators of equal precedence, left associativity means that evaluation proceeds from left to right, and right associativity means the opposite.


编辑:因为所有其他答案都声称 PHP 做 1+3,这里进一步证明它不做:

echo "1" . (print '2') + 9;

给出 220,例如11+9 而不是 1 。 (1+9)。如果加法优先于串联,则应该是 2110,但为此你必须写成

echo "1" . ((print '2') + 9);

关于php - 将 echo 和 print 组合在一个语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213885/

相关文章:

php - 从另一个查询的结果中减去 1 个查询的结果

php - 检查 Joomla php 函数中是否存在查询结果?

ruby - [square brackets] 在 Ruby 中有哪些不同用途?

mysql - 为什么 MySQL 要求参数按特定顺序排列?

php - Laravel 错误 : Uncaught ReflectionException: Class App\Http\Kernel does not exist

php mail onclick on link执行mysql命令

sql - 在 SQL 2005 中的 WHERE 子句中使用命名的自定义列?

c# - : (colon) in c# for Unity3d

r - R中函数的语法?

php - 如何检查图像完整性?