2016-02-02 11 views
5

Tôi đã viết một chương trình nhỏ khi tôi gặp phải điều gì đó kỳ lạ. Nếu tôi muốn PHP trình bày một phép tính số học của phép cộng hoặc trừ với một câu lệnh echo và kết quả của hoạt động tôi đã thêm dấu ngoặc đơn hoặc trang html sẽ không hiển thị hoạt động mà chỉ là kết quả.Tại sao bạn phải thêm dấu ngoặc đơn vào + - thao tác khi ghép nối?

Dưới đây là ví dụ được giảm.

trường hợp đầu tiên (không có dấu ngoặc đơn):

$a = 10; 
$b = 5; 
echo "$a + $b = ".$a + $b."<br>"; // 15 
echo "$a - $b = ".$a - $b."<br>"; // 5 
echo "$a * $b = ".$a * $b."<br>"; // 10 * 5 = 50 
echo "$a/$b = ".$a/$b."<br>"; // 10/5 = 2 
echo "$a % $b = ".$a % $b."<br>"; // 10 % 5 = 0 

trường hợp thứ hai (với dấu ngoặc đơn):

$a = 10; 
$b = 5; 
echo "$a + $b = ".($a + $b)."<br>"; // 10 + 5 = 15 
echo "$a - $b = ".($a - $b)."<br>"; // 10 - 5 = 5 
echo "$a * $b = ".($a * $b)."<br>"; // 10 * 5 = 50 
echo "$a/$b = ".($a/$b)."<br>"; // 10/5 = 2 
echo "$a % $b = ".($a % $b)."<br>"; // 10 % 5 = 0 

bất cứ ai có thể giải thích tại sao điều này đang xảy ra?

+3

Trong hai từ, [ "__Operator Precedence__"] (http: //www.php. net/manual/en/language.operators.precedence.php) –

+1

@MarkBaker Xin lỗi, mặc dù ưu tiên của các nhà khai thác chắc chắn không đóng một vai trò ở đây nhưng không rõ tại sao OP lại nhận được kết quả mô tả. Tôi đã kiểm tra và nhận được kết quả tương tự. Vì bạn dường như biết những gì đang xảy ra, bạn có muốn xây dựng nhận xét của mình không? Cảm ơn! – arkascha

+0

Một gợi ý cụ thể liên quan đến việc sử dụng 'echo'. Đừng nối! Thay vào đó sử dụng ','. Ví dụ. 'echo" $ a + $ b = ", $ a + $ b,"
";' Bạn sẽ không bao giờ gặp phải vấn đề này nữa. – Yoshi

Trả lời

4

từ link Mark Baker bạn có thể thấy rằng

Ngoài ra, trừ, và nối chuỗi có độ ưu tiên bằng!

trong echo "$a + $b = ".$a + $b."<br>"; //15

CONCATENATE chuỗi đầu đen và giá trị của $a, sau đó mặc nhiên chuyển đổi đó để một số (10), do đó bạn có thể thêm $b với nó, sau đó nối các chuỗi thức chữ.

khi bạn đặt nó trong dấu ngoặc, việc bổ sung được coi là số (15) do đó không có các phép toán với chuỗi

+0

cảm ơn :) – Tim8288

+0

Câu trả lời cho câu hỏi OPs là: "chuyển đổi kiểu ngầm từ chuỗi sang số được thực hiện trước khi đánh giá' + ' – arkascha

+0

Đó là điều gì đó tôi vẫn chưa hiểu. Làm thế nào để chuyển đổi loại "10 + 5 = 10" thành công việc số? – arkascha

Các vấn đề liên quan