Nếu bạn nhìn vào các trang liệt kê PHP operator precedence, bạn sẽ thấy rằng các nhà điều hành nối .
và các nhà điều hành bổ sung +
có ưu tiên như nhau, với associativity trái. Điều này có nghĩa là các thao tác được thực hiện từ trái sang phải, chính xác như mã hiển thị. Hãy xem xét rằng:
$output = "sum: " . $a;
echo $output, "\n";
$output = $output + $b;
echo $output, "\n";
Điều này cho phép đầu ra sau đây:
sum: 1
2
Các công trình nối, nhưng sau đó bạn cố gắng thêm chuỗi sum: 1
với số 2
. Strings that don't start with a number evaluate to 0
, vì vậy, giá trị này tương đương với 0 + 2
, kết quả là 2
.
Giải pháp, như bạn đề xuất trong câu hỏi của bạn, là bao gồm các hoạt động bổ sung trong ngoặc đơn, vì vậy chúng được thực hiện cùng nhau, và sau đó kết quả của các hoạt động đó được nối.
echo "sum: " . ($a + $b);
Nếu câu hỏi của bạn đã được trả lời, bạn có thể chấp nhận câu trả lời. Điều này đánh dấu câu hỏi là đã giải quyết. – lonesomeday