18

以下の式の内部手続きを教えてくれる人はいますか?

<?php echo '2' . print(2) + 3; ?>
// outputs 521
4

4 に答える 4

17

printは関数ではないため、括弧は思ったように機能しません。(2) + 3式( )の値を取得して5出力します。それ自体が返さ1れ、それが に連結されてから'2'ed になりechoます。

于 2012-11-01T11:29:27.580 に答える
7

print(2) + 3print (2 + 3)結果は 5 になります (またはと同じprint 2+3です。この場合、print は実際には関数ではないため、括弧はほとんど意味がありません。最後に注意すべきことは、 が のprint前に評価されることechoです。

これまでの出力は次のとおりです。5

echo '2' . printprint は常に 1 を返すため、結果は 21 になります。

現在の出力は次のとおりです: '521'

于 2012-11-01T11:31:53.350 に答える
6

以下で構成される連結文字列をエコーし​​ます。

文字列 '2' 関数 print('2') の結果。true が返され、1 に文字列化されます。 文字列 '3'

さて、ここでの操作の順序は本当におかしくて、521 に終わることはまったくありません! バリアントを試して、何が問題なのかを突き止めましょう。

echo '2'.print(2) + 3; これにより、521が得られます

PHP はそれを次のように解析します。

'2' をエコーし​​ます。(print('2') + '3')) ビンゴ!左側の出力が最初に評価され、「5」が出力されます。

'1' をエコーし​​ます。print('2') 次に、左の print が評価されるので、'52' を出力して、

'1' をエコーし​​ます。'1'; 成功。521。

印刷の結果をエコーし​​たり、エコーの結果を印刷したりしないことを強くお勧めします。そうすることは、そもそも非常に無意味です。

于 2012-11-01T11:43:17.417 に答える
3

最初に 2 と 3 の加算が行われ、その結果が 5 になり、それが出力されます。

次の印刷は1常に返されます。その戻り値は2get21に連結され、エコーされます。

于 2012-11-01T11:30:07.340 に答える