当我执行代码:echo 'a' . print('2') . 'c';时,我得到2ca1.

我可以计算出print('2')写下2,echo print('1')就会打印1

但为什么字母"c"是在打印声明之后而不是在结尾写下的?

我本来以为会看到"2a1 c".

推荐答案

print实际上并不是一个函数,而是一个语言 struct .

作为manual points out强,

用括号包围要打印的参数不会引发语法错误,并且会产生看起来像正常函数调用的语法.然而,这可能会产生误导,因为the parentheses are actually part of the expression being output, not part of the print syntax itself.

如果('2')只是这里的一个表达,那么这意味着它基本上与print '2' . 'c'相同-所以首先发生级联,然后打印结果.

然后返回值print(始终是1)被级联到a,然后echo导致后者a1被写入已打印的2c之后的输出缓冲区.

Php相关问答推荐

PHP等效于SQL的DATEDiff

我的docker—compose lamp stack在软件更新后不工作:Containerconfig错误'''

Woocommerce自定义变体html表仅显示带值的列

Nginx重写扩展名为.php的动态URL

在Laravel Eloquent中实现一对多关系

PHP根据特定索引值从中删除子数组

防止在WordPress短代码中显示重复产品并请求代码更正

批量更新 WooCommerce 中所有产品的特定自定义字段

用于更新 WooCommerce 管理产品列表中库存数量的自定义输入字段

WooCommerce 按产品运输插件:仅收取较高的运输费用

PHP:数组的等边

根据所选付款方式启用/禁用 WooCommerce 所需的 checkout 字段

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

如何使用相同的变量使函数参数对于数组和字符串都是可选的

在 Laravel、Vuejs 和 Inertia 中配置 TypeScript 的问题

如果有很多重定向,PHP curl 的行为不像命令行 curl

使用php删除数组中相同数字的所有变体

每个发布请求 Laravel 9 的 CSRF 令牌不匹配

使用 RSA 2048 公钥验证 RSA PKCS#1v1.5 SHA 256 签名

PHP Loop 在迭代中使用修改后的数据