【问题标题】:Perform loop while function return false until it return true (or fail)在函数返回假时执行循环,直到它返回真(或失败)
【发布时间】:2012-11-29 20:22:47
【问题描述】:

如何用循环编写这段代码?

    $date = new DateTime;

    if(checkForDate($date->format('m')) == true) {
        return true;
    }
    else {
        $date->sub(new DateInterval('P1M'));
        if(checkForDate($date->format('m')) == true) {
            return true;
        }
        else {
            $date->sub(new DateInterval('P1M'));
            if(checkForDate($date->format('m')) == true) {
                return true;
            }
            else {
                // Fail. 
                return false;
            }
        }
    }

【问题讨论】:

    标签: php function loops while-loop


    【解决方案1】:
    for ($i = 0; $i < 3; $i++) {
    
        $date->sub(new DateInterval('P1M'));
        if(checkForDate($date->format('m')) == true) {
            return true;
        }
    
    }
    
    return false;
    

    如你所愿。但这种方法并没有真正的意义。可能你想要别的东西。

    【讨论】:

      【解决方案2】:
      <?php
      $date = new DateTime;
      if(multipleCheckDate($date) == true) {
          return true;
      }
      else {
          return false;
      }
      
      
      function multipleCheckDate($date, $i = 0) {
          if(checkDate() == true) {
              return true;
          }
          else if($i < 6) {
              $date->sub(new DateInterval('P1M'));    
              $i++;
              return $this->multipleCheckDate($date, $i);
          }
          else {
              return false;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-05
        • 1970-01-01
        • 2015-01-05
        • 2015-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-07
        • 2019-10-15
        相关资源
        最近更新 更多