2010-04-23 30 views
21
($DAO->get_num_rows() == 1) ? echo("is") : echo("are"); 

Liều này dường như không hoạt động cho tôi như dự định, tôi gặp lỗi "Unexpected T_ECHO". Tôi hy vọng nó sẽ lặp lại hoặc là 'is' hoặc 'are'.Xử lý sự cố "T_ECHO không mong đợi" trong tuyên bố nhà điều hành ba năm

Tôi đã thử nó mà không có dấu ngoặc xung quanh điều kiện. Tôi chỉ không thể sử dụng toán tử bậc ba theo cách này?

$DAO->get_num_rows() trả về giá trị số nguyên.

+2

Cân nhắc sử dụng các mẫu, không phải đầu ra trực tiếp từ các doanh nghiệp logig –

Trả lời

46

Toán tử Ternary không giống hệt với if-then. Bạn nên đã viết nó

echo ($DAO->get_num_rows() == 1) ? "is" : "are"; 

trả về giá trị trong 2 hoặc vị trí thứ 3. Nó KHÔNG thực hiện tuyên bố ở vị trí thứ 2 hoặc thứ 3.

+1

Nếu nó trả về giá trị, lý do tại sao nếu bạn thay thế 'echo' bởi' print' nó hoạt động? – Mageek

+0

@Mageek - nó "hoạt động"? Hay nó không chết? Chỉ vì nó in một cái gì đó không có nghĩa là nó làm những gì OP muốn. Đề nghị của tôi nên như vậy những gì đã được dự định. – MJB

+1

Tôi muốn hiểu tại sao '($ DAO-> get_num_rows() == 1)? print ("is"): print ("là"); 'công trình, nhưng' ($ DAO-> get_num_rows() == 1)? echo ("is"): echo ("là"); 'không. – Mageek

0

U có thể sử dụng

echo ($ DAO-> get_num_rows() == 1)? "là";

6

Toán tử bậc ba sẽ dẫn đến giá trị - và không lặp lại giá trị đó.


Ở đây, bạn có thể muốn điều này:

echo ($DAO->get_num_rows() == 1) ? "is" : "are"; 


Nếu bạn muốn sử dụng hai echo, bạn sẽ phải làm việc với một khối if/else:

if ($DAO->get_num_rows() == 1) { 
    echo "is"; 
} else { 
    echo "are" 
} 

Mà sẽ làm điều tương tự như phần đầu tiên của mã bằng cách sử dụng toán tử bậc ba - ngoại trừ nó dài hơn một chút.

2

Toán tử bậc ba trả về một trong hai giá trị sau khi đánh giá điều kiện. Nó không phải là nghĩa vụ phải được sử dụng theo cách bạn đang sử dụng nó.

này nên làm việc:

echo ($DAO->get_num_rows() == 1 ? "is" : "are"); 
Các vấn đề liên quan