【问题标题】:Custom Break Command/Function with create_function() in PHP在 PHP 中使用 create_function() 自定义中断命令/函数
【发布时间】:2012-08-27 04:18:05
【问题描述】:

我想知道是否可以在 PHP 中创建自定义中断命令/函数。

例如,

<?php
$custombreak = create_function('$a', 'if ($a == 3) break 1;');

$i = 0;
do {

    echo $i . '<br />';
    $i++;
    $custombreak($i);    //<-- I'd like to break the loop with a custom function.
    // if ($i==3)        //<-- this is not what I'm looking for
    //    break;      

} while ($i < 10);
?>

这不是有效的 PHP 代码,但我希望你能明白我的意思。我想用函数转义循环。

【问题讨论】:

    标签: php loops syntax command


    【解决方案1】:

    即使你创建了正常的功能

    function foo() {
      break 2; // this is not valid
    }
    
    while(true) {
      foo();
    }
    

    这行不通。这就是程序员所做的:

    function foo() {
      return true;
    }
    
    while(true) {
      if(foo()) break;
    }
    

    所以你的代码是..

    【讨论】:

      【解决方案2】:
      <?php
      
      function control($a){
          if($a==3)
              return false;
          return true;
      }
      
      $i = 0;
      do {
      
          echo $i . '<br />';
          $i++;    
      
      } while ( ($i < 10) && (control($i)) );
      
      ?>
      

      这是这个问题的答案吗?

      【讨论】:

      • 否 :D 他询问break 不是循环控制:))
      • 是的,但你没有回答为什么break 命令不起作用:))问题不是“如何使循环 0 到 3”
      • 你在开玩笑吗 :) 这很有趣 :) 但我认为他可以使用我的意见,我只是给他一个打破循环的点。试着帮忙。好吗?
      【解决方案3】:

      我找到了一种处理异常的方法。

      $i = 0;
      try {
          do {
              $i++;
              echo $i . '<br />';
              custombreak($i);
          } while ($i <= 10);
      } catch (Exception $e) {}
      
      function custombreak($i) {
          if ($i > 3) throw new Exception("");
      }
      

      谢谢大家。

      【讨论】:

        【解决方案4】:

        您可以在 while 循环中使用此控件。我认为不需要编写函数。

        <?php
        
        $i = 0;
        do {
        
            echo $i . '<br />';
            $i++;    
        
        } while ( ($i < 10) && ($i!=3) );
        ?>
        

        您知道多个控件不是吗?

        【讨论】:

        • 这不是问题的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-17
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多