如何构造`print`有效?

voo*_*417 14 php

我目前正在浏览问题Zend PHP 5 Certification Practice Test并看到以下内容:

print print('5') + print('4');
// output
// 461

// or

echo '3' + '0.5' , print('2') + 1;
// output 
// 3.531
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?http://php.net/manual/en/function.print.php中的描述和示例 没有说明任何内容......

Bar*_*mar 13

print它不是一个函数,它是一种语言结构.它总是返回1,其优先级低于算术运算符.所以

print print('5') + print('4');
Run Code Online (Sandbox Code Playgroud)

相当于:

print (print ('5' + print '4'));
Run Code Online (Sandbox Code Playgroud)

这将执行以下步骤:

  1. print 4- 打印4和退货1.
  2. 计算5 + 1,返回6.
  3. print 6- 打印6和退货1
  4. print 1- 打印1(也返回1,但没有任何结果如此无关紧要).

所以

echo '3' + '0.5' , print('2') + 1
Run Code Online (Sandbox Code Playgroud)

相当于:

echo (3 + 0.5);
echo (print (2 + 1));
Run Code Online (Sandbox Code Playgroud)

这将执行以下步骤:

  1. 计算3 + 0.5,返回3.5
  2. echo 3.5,打印 3.5
  3. 计算2 + 1,返回3
  4. print 3,打印3和返回1.
  5. echo 1,打印 1