2013-11-27 13 views
16

, cách ưa thích nhất của văn bản nếu viết tắt một liner như là gì:PHP nếu viết tắt và lặp lại trong một dòng - có thể?

expression ? $foo : $bar 

Lô xoắn: Tôi cần phải echo $foo hay echo $bar. Bất kỳ thủ đoạn điên rồ nào? :)

+1

* ternary tuyên bố *, không viết tắt * nếu *. Câu hỏi thực sự ở đây là gì? – Phil

+1

biểu thức echo? $ foo: $ bar; –

+1

@Phil: * Biểu thức điều kiện *, không * câu lệnh ternary *. :) Đó là một câu lệnh, 'echo' sẽ hoạt động trong các nhánh. Và lý do duy nhất bạn có thể thoát khỏi bằng cách gọi nó là bất kỳ thứ gì đó là hiện tại chỉ có một toán tử bậc ba. "Ternary" có nghĩa là phải làm với ba, mặc dù ... nó không phải là một tên rất hữu ích. :) – cHao

Trả lời

34
<?=(expression) ? $foo : $bar?> 

chỉnh sửa: here's a good read for you on the topic

chỉnh sửa: more to read

+2

Các dấu ngoặc đơn là dư thừa – Phil

+0

Bạn thưa bạn, là đúng. Họ thực sự, loại dự phòng, ở đây. Nhưng hãy nhớ, đôi khi, biểu thức có thể phức tạp, do đó các dấu ngoặc đơn phụ. – Dave

+0

Tôi chưa bao giờ thấy PHP không đánh giá biểu thức có điều kiện, bất kể phức tạp như thế nào, sans một cặp ngoặc đơn – Phil

7

biểu thức echo? $ foo: $ bar;

2

Các ternary operator đánh giá với giá trị của biểu thức thứ hai nếu là người đầu tiên đánh giá để TRUE, và để đánh giá biểu thức thứ ba nếu là người đầu tiên đánh giá để FALSE. Để echo một giá trị hoặc giá trị khác, chỉ cần chuyển biểu thức bậc ba đến câu lệnh echo.

echo expression ? $foo : $bar; 

Đọc thêm về các nhà điều hành ternary trong cuốn hướng dẫn PHP để biết thêm chi tiết: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

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