为什么不打印()&& print_r()`输出两个东西?

时间:2017-10-06 12:14:06

标签: php printing

根据PHP's documentation,您不需要使用括号"在print,因为它不是真正的功能",但您仍然可以将其用作功能,并且 always returns 1

所以在我的代码中我尝试这样做:

print('<pre>') && print_r($array) && die;

...并且<pre>从未打印到页面。

当然,如果我这样做:

print('<pre>');
print_r($array) && die;

......那很好。

但是第一个怎么工作呢?

1 个答案:

答案 0 :(得分:7)

print不是一个函数,而是一个语言结构。括号对它没有实际意义。真正被执行的是:

print (('<pre>' && print_r($array)) && die);

它首先评估'<pre>',这是真实的,然后继续评估print_r调用,它打印一些东西到屏幕,然后尝试将其与{{1杀死脚本。然后,它永远不会完成die表达式和&&其结果。

如果要正确影响print调用的优先级,则需要将整个事物作为一个表达式:

print