2011-07-05 24 views
5

có thể đặt câu lệnh chuyển đổi PHP để thực hiện 2 cuộc tranh luận không? Ví dụ:Câu lệnh chuyển đổi có thể lấy hai đối số không?

switch (firstVal, secondVal){ 

    case firstVal == "YN" && secondVal == "NN": 
    thisDesc = "this is the outcome: YN and NN"; 
    break; 

    case firstVal == "YY" && secondVal == "NN": 
    thisDesc = "this is the outcome: YY and NN"; 
    break; 
} 

Rất cám ơn, tôi chưa thực hiện PHP trong nhiều năm!

Trả lời

2

Không, nhưng nếu trường hợp của bạn cũng đơn giản như những gì bạn có, chỉ cần nối hai đầu vào và kiểm tra cho các giá trị nối:

switch ($firstval . $secondval) { 
case "YNNN": ... 
case "YYNN": ... 
} 
+0

Mặc dù có vẻ như một giải pháp tốt, cả '$ firstval' và' $ secondval' sẽ phải có độ dài hoặc loại được xác định trước. Tôi đoán những gì tôi đang cố gắng để nói là nếu người đầu tiên là "Y" và thứ hai là "NNN" và trong trường hợp khác đầu tiên là "YN" và thứ hai "NN", không có cách nào để nói với họ ngoài vì giá trị được ghép nối sẽ là "YNNN". –

+0

@Francois: Bạn có thể giới thiệu một dấu phân cách để đảm bảo, các giá trị không được trộn lẫn. '$ firstVal. '|' . $ secondVal' và 'case 'YN | NN'' /' case' YY | NN'' (và vân vân). – KingCrunch

+0

Tôi biết, đó là lý do tại sao tôi đặt trình tiết lộ. Nhưng điều này vẫn có thể hoạt động nếu bạn biết một char không thể ở trong các biến đó. Chỉ cần dính vào giữa chúng. Không quy mô tốt mặc dù, thay thế bằng đồng bằng nếu/khối khác có lẽ là tốt hơn trong thời gian dài. – Mat

0

Tôi khá chắc chắn bạn không thể làm điều đó, không chỉ trong PHP mà còn bất kỳ ngôn ngữ lập trình nào khác.

6

Không, bạn không thể. Một -statement switch như

switch ($a) { 
    case 1: 
    break; 
    case 2: 
    break; 
} 

đó là một cách hiệu quả giống như

if ($a == 1) { 
} else if ($a == 2) { 
} 

Bạn có thể sử dụng một cấu trúc hơi khác nhau

switch (true) { 
    case $firstVal == "YN" && $secondVal == "NN": 
    break; 
    case $firstVal == "YY" && $secondVal == "NN": 
    break; 
} 

tương đương với

if (true == ($firstVal == "YN" && $secondVal == "NN")) { 
} else if (true == ($firstVal == "YY" && $secondVal == "NN")) { 
} 

Trong một số trường hợp, nó có thể đọc được nhiều hơn thay vì các số if-elseif-else vô hạn.

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