7

誰かがこれがどのように機能するかを私に説明できますか?

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

印刷します:76151

1関数からの戻り値はわかっていprintますが、関数が逆の順序で呼び出されるのはなぜですか?

4

3 に答える 3

9

これは、ドット演算子が左結合であるために発生すると思います。

式は、括弧付きで次のようになります。

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 61print 7リターンブール値1であるため、なぜ1も印刷されます

于 2012-07-18T15:03:14.637 に答える