2012-03-01 35 views
6

Tôi cần phải thêm dữ liệu chắp thêm vào một chuỗi nếu một biến nhất định là đúng, nếu không, tôi không cần phải thêm bất kỳ thứ gì. Hiện tại tôi đang làm:Bạn có phải bao gồm một giá trị sai trong một toán tử ternary PHP không?

$string = (condition()) ? 'something'.$string.'something' : $string; 

Có cách nào để bỏ qua thêm tùy chọn sai trong toán tử bậc ba không? Có vẻ như lãng phí khi nói $ string = $ string nếu điều kiện là sai.

Trả lời

3

Bạn không thể bỏ qua. Bạn có thể viết lại như một dòng một if tình trạng mặc dù:

if (condition()) $string = 'something'.$string.'something'; 
+0

Đây là lựa chọn tiếp theo của tôi nhưng đã hy vọng nó có thể được thực hiện. Cám ơn vì đã xác nhận. – Ayub

0

Không, không có cách nào để bỏ qua. Nếu bạn muốn bỏ qua các bit sai, quay trở lại với phương pháp if:

if (condition()) $string = 'something' . $string . 'something'; 

Phương pháp ternary chỉ là một đoạn ngắn tay if tuyên bố anyway. Nếu bạn có thể thực hiện tuyên bố if chỉ ngắn gọn mà không bị mất khả năng đọc (như trong ví dụ trên), bạn nên xem xét nó.

Nhưng, thành thật mà nói, tôi thậm chí còn muốn định dạng đó để làm cho nó hơn có thể đọc được:

if (condition()) 
    $string = 'something' . $string . 'something'; 

Trừ khi bạn là một cách tuyệt vọng ngắn chiều cao màn hình, đó sẽ là dễ hiểu trong nháy mắt :-)

1

Vâng, bạn phải. Hãy nghĩ về toán tử bậc ba như một hàm. Những gì bạn mong chờ hành vi là nếu bạn làm điều gì như thế này, nhưng không muốn thực hiện một bài tập nếu condition() đánh giá để false:

$string = ternary(condition(), $yesValue, $noValue); 

Không có cách nào mà bạn có thể hủy bỏ sự phân công vào biến $string nếu condition() đánh giá sai.

-1

No. Đó là điểm của một số ba. Nếu bạn không muốn một giá trị sai, tại sao không chỉ làm cho điều kiện() trả lại giá trị bạn cần?

Cái gì như:

$string = condition($string); 

function condition($string){ 
    if($string == 'whatever') 
    { 
     $string = 'something'.$string.'something'; 
    } 

    return $string; 
} 

tôi có thể nhìn thấy tất cả mọi người khác đã đánh bại tôi vào nó, vì vậy đây là tài liệu cho ternary:

http://php.net/manual/en/language.operators.comparison.php

+0

bởi vì anh ta chỉ muốn hiển thị nếu nó đúng và không có gì nếu sai. –

+0

@hanoncs - bạn vừa đề xuất điều gì trên trái đất? Nếu anh ta không muốn xác định việc xử lý sai thì đừng sử dụng một thứ ba đơn giản và đơn giản. Không có "có thể" trong câu hỏi của anh. Rõ ràng là anh chỉ muốn phụ thêm vào sự thật nhưng nghĩ rằng việc tự khai báo lại là lãng phí cho sai lầm. Vì vậy, nếu đó là một mối quan tâm, ông đang chạy một chức năng để kiểm tra anyhow vậy tại sao không chỉ nói $ string = condition() và có chức năng đó cho kết quả cuối cùng của chuỗi? –

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