2013-07-17 33 views
13

Tôi đã luôn sử dụng || (ống đôi) cho if (($a == $b) || ($a == $c)) { }or cho do_this() or do_that();.toán tử logic hoặc so với || (ống đôi) trong php

Tại sao không if (($a == $b) or ($a == $c)) { } hoặc do_this() || do_that();?

Có lý do nào để sử dụng bất kỳ nhà điều hành hợp lý nào trong số hai toán tử logic này hay chỉ là một sở thích cá nhân?

Điều tương tự cũng áp dụng cho &&and, tôi chỉ sử dụng &&.

+2

Giới thiệu về trùng lặp: Câu hỏi đặt ra là rất giống nhau, là sự thật, nhưng không giống hệt nhau, và tiếc là rất khó để tìm thấy một câu hỏi khi bạn chỉ tìm kiếm "|| vs OR", đó là lý do tại sao tôi đã sử dụng "Double pipe" trong tiêu đề. – Miawa

Trả lời

14

Các toán tử "được đánh vần" andor có quyền ưu tiên thấp hơn, thậm chí thấp hơn nhiệm vụ, vì vậy bạn có thể sử dụng chúng để tránh phải viết dấu ngoặc đơn ở nhiều nơi. Ví dụ:

$d=$a||$b and $c tương đương với ($d=$a||$b) && $c

Họ cũng dễ đọc hơn trong nhiều tình huống.

+0

Trong trường hợp cụ thể của 'if ($ a || $ b) {...}' chỉ là sở thích sử dụng '||' hoặc 'hoặc'? – Miawa

+1

Phụ thuộc vào giá $ a và $ b. Nếu chúng là biến, khả năng đọc là sự khác biệt duy nhất. Nếu chúng là những biểu thức phức tạp thì sự khác biệt về quyền ưu tiên có thể đóng một vai trò. – Joni

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