2010-02-27 36 views
8

所以我有這樣的形式.. 隨着2場。 「YOUTUBE」和「鏈接」我想要做的,如果你填寫在YouTube上,它應該這樣做:PHP:如果空和空

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>"; 
} 

}

該做的工作,但我也想檢查相同的,如果(),如果沒有鏈接。 所以,我做的這一點:

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>"; 
    } 
} 

但是如果我要檢查什麼的對面,如果有件事在YouTube鏈接並沒有什麼? 如果我想檢查在這兩者中是否沒有任何東西?

回答

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

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

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

這裏是做不同的事情在所有四個案件緊湊的方式:

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

如果你想使用表達式來代替,你可以使用?:代替:

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

對於幾個案例,或者甚至只涉及很多標準的少數案例,都考慮使用開關。

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; 
    } 

} 

如果您有多個需要相同操作的案例,您可以將它們堆疊並省略中斷;流通。只是可能會發表評論,例如/ *流經* /所以您明確地打算如此做。

請注意,案件周圍的{}不是必需的,但它們對於可讀性和代碼摺疊很有用。

更多關於開關:http://php.net/manual/en/control-structures.switch.php