令人惊讶的是,这些是不同的,我无法理解发生了什么:
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数量不同?
答案 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
,然后回复1
与1
,print '2'
和3
的总和连接。答案 1 :(得分:1)
打印输出传递给它的参数,并始终返回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
打印5
(2
和3
之和)并返回1
值,然后将var_dumped()返回为int(1)
(print '2')
打印2
并返回1
,3
添加到4
,提供1
;然后,回声输出4
,跟随该总和({{1}})