2012-10-31 44 views
16

Tôi đang cố chuyển đổi mã sau thành một toán tử Ternary, nhưng nó không hoạt động và tôi không chắc chắn tại sao. Tôi nghĩ rằng vấn đề của tôi là tôi không biết làm thế nào để thể hiện các hoạt động elseif ở định dạng ternary. Từ sự hiểu biết của tôi và elseif được thực hiện theo cách tương tự như hoạt động if bằng cách sử dụng định dạng : (condition) ? 'result'.Các toán tử Ternary của PHP Elseif

if ($i == 0) { 
    $top = '<div class="active item">'; 
} elseif ($i % 5 == 0) { 
    $top = '<div class="item">'; 
} else { 
    $top = ''; 
} 

$top = ($i == 0) ? '<div class="active item">' : ($i % 5 == 0) ? '<div class="item">' : ''; 
+7

Whydoyouwantomakeyoursourcecodeunreadable? – VolkerK

+1

Tôi không, nhưng tôi muốn biết cách xử lý 'ifelse'. – Jon

+0

Như @VolkerK cho biết, các nhà khai thác ba năm làm tổ không phải là một ý tưởng tốt cả. Bạn nên tránh nó. – Carlos

Trả lời

34
$top = ($i == 0) ? '<div class="active item">' : (($i % 5 == 0) ? '<div class="item">' : ''); 

bạn cần phải thêm ngoặc xung quanh toàn bộ khác chặn

14

các ternary điều hành không hỗ trợ một if... else if... else... hoạt động đúng; Tuy nhiên, bạn có thể mô phỏng hành vi bằng cách sử dụng kỹ thuật sau

var name = (variable === 1) ? 'foo' : ((variable === 2) ? 'bar' : 'baz'); 

Cá nhân tôi không quan tâm cho điều này như tôi không tìm thấy nó dễ đọc hơn hay thanh lịch. Tôi thường thích câu lệnh switch.

switch (variable) { 
    case 1 : name = 'foo'; break; 
    case 2 : name = 'bar'; break; 
    default : name = 'bas'; break; 
} 
3

Quá trễ có thể chia sẻ một số quan điểm, tuy nhiên :)

  1. Sử dụng nếu - else if - khác đối với một số hạn chế về đánh giá. Cá nhân tôi thích sử dụng if - else if - else khi số so sánh nhỏ hơn 5.
  2. Sử dụng trường hợp chuyển đổi nơi số lượng đánh giá nhiều hơn. Cá nhân tôi thích trường hợp chuyển đổi trong trường hợp nhiều hơn 5.
  3. Sử dụng số ba khi so sánh đơn lẻ đang được xem xét (hoặc so sánh đơn khi lặp) hoặc khi cần so sánh if-else trong mệnh đề "case" của một cấu trúc chuyển đổi.
  4. Sử dụng ternary nhanh hơn khi so sánh trong khi lặp qua một tập dữ liệu rất lớn.

IMHO của nó cuối cùng là phát triển những người quyết định phương trình thương mại giảm giữa mã dễ đọc và hiệu suất và lần lượt quyết định những gì ra khỏi, vs ternary nếu khác-nếu khác so với chuyển đổi hợp cụ thể, có thể được sử dụng trong bất kỳ tình hình cụ thể.

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