2012-07-23 24 views
5

thể trùng lặp:
Short hand to do something like: if($variable == 1 || $variable == “whatever” || $variable == '492') .PHP: Nếu một bằng b hoặc c hoặc d

Đây có phải là

if ($a==b||$a==c||$a==$d){ ... 

con đường ngắn nhất để mô tả logic này. Tôi đang suy nghĩ về điều gì đó như

if ($a==($b||$c||$d)) { ... 

nhưng đó không phải là mã hợp lệ. Bất kỳ đề xuất?

+0

sai với phương pháp này là gì? – bugwheels94

+2

Điều này không đúng vì bạn đang cố gắng làm boolean hoặc với || giữa các giá trị boolean không. – rkosegi

+3

Sử dụng ['in_array'] (http://php.net/in_array). – deceze

Trả lời

11

Bạn có thể sử dụng in_array:

if(in_array($a, array($b,$c,$d))){ 
    //do something 
} 
+1

+1 Kỹ thuật tuyệt vời – mrsrinivas

+0

ha, chúng tôi nghĩ giống nhau – bigkm

+0

Bạn nên đóng câu hỏi này là trùng lặp ... –

1

Đó cả hai đều không giống như || là toán tử boolean và sẽ luôn luôn trả true hoặc false. Vì vậy, trong câu lệnh thứ hai, bạn đang so sánh nếu $atrue hoặc false.

Bạn có thể sử dụng để so sánh in_array nếu $a tồn tại trong array($b, $c, $d)

1

không biết tại sao Bạn muốn làm một số loại điều, nhưng Bạn có thể đặt b, c, d trong mảng và gọi in_array chức năng tìm kiếm cho các yếu tố. Tôi vẫn không thể hiểu tại sao Bạn muốn viết mã ngắn và đơn giản, ngắn gọn và không đơn giản.

+0

Vì tôi có khoảng 15 giá trị mà tôi muốn đưa tôi vào IF – Martin

+0

để in_array theo đề xuất của tôi và khác. –

2

Đó là mã hợp lệ nhưng không chính xác về mặt logic.

Nếu bạn có nhiều giá trị thì bạn có thể làm điều gì đó như thế này.

if(in_array($a,array($b,$c,$d))) { 
} 
+0

Câu trả lời hay, nhưng nó giống như @Engineer đã viết một phút trước. – Fluffeh

+0

@Fluffeh: Và giống như ascii-lime đã viết cách đây 9 tháng. –

+0

@FelixKling Không nghi ngờ gì về việc có bản sao, chỉ cần đi xa như nhìn vào phần Hỏi & Đáp này để xem các bản sao :) – Fluffeh

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