2010-02-27 5 views
8

Vì vậy, tôi có biểu mẫu này .. Với 2 trường. "Youtube" và "liên kết" Tôi muốn làm gì nếu bạn đã điền trong YouTube, nó nên làm điều này:PHP: nếu! Trống & trống

if(!empty($youtube)) { 
if ($pos === false) { 
echo "Du skal indtaste youtube et URL, som starter med 'http://www.youtube.com/watch?..<br>"; 
echo "<br> Har du ikke din video på YouTube, skal du ikke udfylde feltet, men kun 'Link' feltet.<br><br>"; 
echo "<a href='javascript:history.back();'>Gå tilbage</a>"; 
} 

}

này làm công việc của mình, nhưng tôi cũng muốn kiểm tra trên cùng nếu(), nếu không có gì trong liên kết. Vì vậy, ive đã làm điều này:

if(!empty($youtube) && empty($link)) { 
    if ($pos === false) { 
    echo "Du skal indtaste youtube et URL, som starter med 'http://www.youtube.com/watch?..<br>"; 
    echo "<br> Har du ikke din video på YouTube, skal du ikke udfylde feltet, men kun 'Link' feltet.<br><br>"; 
    echo "<a href='javascript:history.back();'>Gå tilbage</a>"; 
    } 
} 

Nhưng những gì nếu tôi muốn kiểm tra ngược lại, nếu theres một cái gì đó trong LINK và không có gì trong youtube? Và nếu tôi muốn kiểm tra nếu không có gì ở tất cả trong hai?

Trả lời

17
if(!empty($youtube) && empty($link)) { 

} 
else if(empty($youtube) && !empty($link)) { 

} 
else if(empty($youtube) && empty($link)) { 
} 
6

Đây là một cách nhỏ gọn để làm một cái gì đó khác nhau trong cả bốn trường hợp:

if(empty($youtube)) { 
    if(empty($link)) { 
     # both empty 
    } else { 
     # only $youtube not empty 
    } 
} else { 
    if(empty($link)) { 
     # only $link empty 
    } else { 
     # both not empty 
    } 
} 

Nếu bạn muốn sử dụng một biểu thức thay vào đó, bạn có thể sử dụng ?: thay vì:

echo empty($youtube) ? (empty($link) ? 'both empty' : 'only $youtube not empty') 
        : (empty($link) ? 'only $link empty' : 'both not empty'); 
3

Đối một số trường hợp, hoặc thậm chí chỉ là một vài trường hợp liên quan đến rất nhiều tiêu chí, hãy xem xét sử dụng một công tắc.

switch(true){ 

    case (!empty($youtube) && !empty($link)):{ 
     // Nothing is empty... 
     break; 
    } 

    case (!empty($youtube) && empty($link)):{ 
     // One is empty... 
     break; 
    } 

    case (empty($youtube) && !empty($link)):{ 
     // The other is empty... 
     break; 
    } 

    case (empty($youtube) && empty($link)):{ 
     // Everything is empty 
     break; 
    } 

    default:{ 
     // Even if you don't expect ever to use it, it's a good idea to ALWAYS have a default. 
     // That way if you change it, or miss a case, you have some default handler. 
     break; 
    } 

} 

Nếu bạn có nhiều trường hợp yêu cầu cùng một hành động, bạn có thể xếp chồng và bỏ qua ngắt; để chuyển đổi. Chỉ cần có thể đặt một bình luận như/* Chảy qua */vì vậy bạn đang rõ ràng về làm điều đó vào mục đích.

Lưu ý rằng {} xung quanh các trường hợp không bắt buộc, nhưng chúng rất tốt cho khả năng đọc và mã gấp.

Tìm hiểu thêm về công tắc: http://php.net/manual/en/control-structures.switch.php