2010-11-22 39 views
19

Tôi đang gặp khó khăn. Cách nào tốt nhất để sử dụng và tại sao .. chuyển đổi hoặc nếu?Chuyển đổi nếu câu lệnh

switch ($x) 
{ 
case 1: 
    //mysql query 
    //echo something 
    break; 
case 2: 
    //mysql query 
    //echo something 
    break; 
} 

...

if ($x == 1) { 
    //mysql query 
    //echo something  
} 

if ($x == 2) { 
    //mysql query 
    //echo something 
} 
+6

bản sao có thể có của [là "nếu" nhanh hơn "trường hợp chuyển đổi()"?] (Http://stackoverflow.com/questions/767821/is-else-if-faster-than-switch-case) (ngôn ngữ trong câu hỏi đó là C# nhưng chuyển đổi/trường hợp và nếu các câu lệnh thường hoạt động giống nhau trong PHP) – BoltClock

Trả lời

30

Họ có ý nghĩa khác nhau.

Ví dụ đầu tiên sẽ dừng khi điều kiện được đáp ứng.

Cách thứ hai sẽ kiểm tra $x hai lần.

Bạn có thể muốn đặt số if thứ hai là else if. Điều này có nghĩa là khối sẽ bị bỏ qua ngay sau khi một điều kiện được đánh giá là đúng.

Nhưng nếu bạn đang tự hỏi cái nào là nhanh nhất, thay vào đó bạn hãy nghĩ rằng cái nào hiệu quả nhất để truyền đạt những gì tôi muốn làm. Họ sẽ cả hai có thể kết thúc như nhảy có điều kiện trong kiến ​​trúc mục tiêu.

Premature tối ưu hóa ... (bạn biết phần còn lại: P)

+0

Tất nhiên, trừ khi câu lệnh if thứ hai là khác nếu. – BoltClock

+0

Bạn có một điểm tốt đặc biệt là với ví dụ rộng của tôi! Đối với điều này tôi bỏ phiếu trả lời của bạn chính xác :) – CyberJunkie

5

Đầu những gì bạn có không giống

switch(value) 
    case condition1: 
    break; 
    case condition2: 
    break 

if (condition1) { 
} 
if (condition2) { 
} 

Đây là đồng nghĩa

switch(value) 
    case condition1: 
    break; 
    case condition2: 
    break 

if (condition1) { 
} 
else if (condition2) { 
} 

Thứ hai nếu bạn đang nói về e thứ hai của tôi xample nơi hai là đồng nghĩa. Sau đó, sử dụng các câu lệnh switch có thể giảm bớt một số cơn đau trong mã hóa của các câu lệnh if ..else if ....

Các điểm chuyển mạch theo quan điểm của tôi cũng có thể dễ đọc hơn một chút. Nhưng ngay cả sau đó có những lúc khi sử dụng if...else chỉ đơn giản là tốt hơn đặc biệt là với logic phức tạp.

+1

So sánh tốt! Cảm ơn bạn! – CyberJunkie

+0

+1 cho * có thời gian khi sử dụng 'if ... else' đơn giản là tốt hơn * ... Tôi thấy mình luôn luôn sử dụng nếu câu lệnh với boolean vì nó cung cấp luồng dễ dàng hơn. –

7

Chuyển đổi tốt hơn khi có nhiều hơn hai lựa chọn. Đó là chủ yếu cho khả năng đọc mã và bảo trì hơn là hiệu suất.

Như những người khác đã chỉ ra, ví dụ của bạn không tương đương, tuy nhiên.

1

Nếu bạn có một biến duy nhất, một tập hợp các giá trị có thể và bạn muốn thực hiện các hành động khác nhau cho mỗi giá trị, đó là trường hợp chuyển đổi.

Báo cáo chuyển đổi giúp bạn thấy rõ hơn rằng bạn chỉ đang xác định giá trị được phép mà một biến đã có.

Nếu bạn có nhiều điều kiện phức tạp hơn hoặc nhiều biến để xem xét, hãy sử dụng câu lệnh if.

5

Câu lệnh chuyển đổi sẽ nhanh hơn vì nó chỉ kiểm tra giá trị một lần.

1

cả hai tuyên bố là tuyên bố ra quyết định bằng cách so sánh một số loại thông số và sau đó hiển thị kết quả.câu lệnh switch không nghi ngờ gì nhanh hơn câu lệnh if nhưng câu lệnh if có lợi thế lớn hơn câu lệnh switch là khi bạn phải sử dụng các phép toán logic như (<,>, < =,> =,! =, ==) . bất cứ khi nào bạn bắt gặp các thao tác logic, bạn sẽ bị loại bỏ bằng cách sử dụng câu lệnh switch nhưng đừng lo lắng có một cách khác có thể sử dụng để đạt được mục tiêu của bạn là if-statement hoặc if-else hoặc if-else-if tuyên bố. Tôi sẽ đề nghị bạn sử dụng nếu hầu hết thời gian thay vì chuyển đổi.

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