我有以下代碼:<?php $a = 1; $b = 2; echo "sum: " . $a + $b; echo "sum: " . ($a + $b);?>當我執行代碼時,我得到:2sum: 3為什么"sum:"在第一個回顯中無法打印字符串?將加法放在括號中似乎很好。是否在任何地方都記錄了這種奇怪的行為?
3 回答

慕運維8079593
TA貢獻1876條經驗 獲得超5個贊
這兩個運算符的加法+運算符和串聯.運算符都具有相同的運算符優先級,但是由于它們保持關聯,因此它們的計算方式如下:
echo (("sum:" . $a) + $b);
echo ("sum:" . ($a + $b));
因此,您的第一行首先進行連接,最后得到:
"sum: 1" + 2
(現在,由于這是一個數字上下文,因此您的字符串將轉換為整數,因此最終得到0 + 2,然后得到結果2。)

烙印99
TA貢獻1829條經驗 獲得超13個贊
如果查看列出PHP運算符priority的頁面,則會看到串聯運算符.和加法運算符+具有相同的優先級,并且具有左關聯性。這意味著操作完全按照代碼所示從左到右完成。讓我們看一下:
$output = "sum: " . $a;
echo $output, "\n";
$output = $output + $b;
echo $output, "\n";
這給出以下輸出:
sum: 1
2
串聯有效,但是您隨后嘗試將字符串添加sum: 1到number中2。不以數字開頭的字符串的計算結果為0,因此等價于0 + 2,結果為2。
正如您在問題中建議的那樣,解決方案是將加法運算括在方括號中,以便將它們一起執行,然后將這些運算的結果連接在一起。
echo "sum: " . ($a + $b);
- 3 回答
- 0 關注
- 360 瀏覽
添加回答
舉報
0/150
提交
取消