【问题标题】:PHP: if !empty & emptyPHP:如果 !empty & empty
【发布时间】:2010-02-27 10:57:25
【问题描述】:

所以我有这个表格.. 有 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 中没有内容,该怎么办? 如果我想检查这两者中是否什么都没有?

【问题讨论】:

    标签: php if-statement and-operator


    【解决方案1】:
    if(!empty($youtube) && empty($link)) {
    
    }
    else if(empty($youtube) && !empty($link)) {
    
    }
    else if(empty($youtube) && empty($link)) {
    }
    

    【讨论】:

      【解决方案2】:

      这是一种在所有四种情况下都可以做不同事情的简洁方法:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2010-12-23
          • 2012-09-13
          • 1970-01-01
          • 1970-01-01
          • 2014-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多