7

谁能向我解释这是如何工作的:

<?php
    print 5 . print 6 . print 7;
?>

它打印:76151

我知道1是函数的返回值print,但为什么函数的调用顺序相反?

4

3 回答 3

9

我相信这是因为点运算符是left-associative

带有括号的表达式看起来像这样:

print 5 . (print 6 . (print 7));
于 2012-07-18T14:59:33.247 回答
2

您的功能正在从右到左进行评估。

跟踪与此类似:

print (5 . print 6 . print 7)

print 7 首先计算,打印 7 并返回 1。

print (5 . print 6 . 1)

这跟踪打印 61 并返回 1 最后:

print (5 . 1)

因此你有 76151。

于 2012-07-18T15:01:25.773 回答
0

你的表达式可以这样写:

print (5 . print (6 . print 7));

print 61并且print 7是返回布尔值1,这就是为什么1也打印

于 2012-07-18T15:03:14.637 回答