打印功能和括号发生了什么?

时间:2014-10-01 17:00:04

标签: php

令人惊讶的是,这些是不同的,我无法理解发生了什么:

var_dump(print'2');
echo "<br>";
var_dump((print '2')+3);
echo "<br>";
var_dump(print '2'+3);
echo "<br>";
echo '1'.(print '2')+3;

这是输出:

2int(1) 
2int(4) 
5int(1) 
214

我知道print函数输出一个字符串,这个字符串是一个数字,所以它显示了一个整数作为一个值,但我不完全明白这里发生了什么,有人请解释一下吗? 为什么+3在第2行没有影响?为什么vardump数量不同?

3 个答案:

答案 0 :(得分:1)

根据文件,print

  

始终返回 1


举例:

  • var_dump(print'2');将打印字符串2并返回/转储整数1
  • var_dump((print '2')+3);将打印字符串2并返回/转储整数1 + 3
  • var_dump(print '2'+3);将打印'2' + 3,其值为5,然后返回/转储整数1
  • echo '1'.(print '2')+3;将打印2,然后回复11print '2'3的总和连接。

答案 1 :(得分:1)

参考php docs for print

  

打印输出传递给它的参数,并始终返回1.

所以低于输出

var_dump(print'2'); 
// outputs two and gives int 1 to vardump
var_dump((print '2')+3);
// outputs 2 and adds 3 to retuned 1 to pass 4 to vardump
var_dump(print '2'+3);
//prints 2+3=5 and gives 1 to var_dump
echo '1'.(print '2')+3; 
// prints 2 first then 1 is concatinated with 4 which is sum of 3 and 1 from print

答案 2 :(得分:0)

第1行

print '2' 

打印2并返回1值,然后将var_dumped()返回为int(1)

对于第2行

print '2'

打印2并返回1值,然后将其添加到3,然后将var_dumped()添加为int(4)

对于第3行

print '2'+3

打印523之和)并返回1值,然后将var_dumped()返回为int(1)

#p>第4行

(print '2')

打印2并返回13添加到4,提供1;然后,回声输出4,跟随该总和({{1}})

的结果