12

所以我有这个表格..有2个字段。“Youtube”和“链接”我想做的如果你已经填写了YouTube,应该是这样的:

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()。所以我这样做了:

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

但是,如果我想检查相反的内容,如果 LINK 中有内容而 youtube 中没有内容,该怎么办?如果我想检查这两个中是否什么都没有?

4

3 回答 3

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

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

}
else if(empty($youtube) && empty($link)) {
}
于 2010-02-27T11:00:08.650 回答
8

这是在所有四种情况下执行不同操作的紧凑方法:

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' );
于 2010-02-27T11:20:21.040 回答
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;
    }

}

如果您有多个案例需要相同的操作,则可以将它们堆叠起来并省略中断;流过。只是可能会发表评论,例如 /*Flowing through*/,这样您就可以明确地故意这样做。

请注意,案例周围的 { } 不是必需的,但它们对于可读性和代码折叠很有好处。

更多关于开关: http: //php.net/manual/en/control-structures.switch.php

于 2013-01-25T09:40:57.957 回答