4
$foo=1;

function someFunction(){
  if($foo==0){ //-------Will test, won't execute
    bar();
  }elseif($foo==1){ //--Will test, and execute
    baz();
  }elseif($foo==2){ //--Doesn't test
    qux();
  }elseif($foo==3){ //--Doesn't test
    quux();
  }else{ //-------------Doesn't test
    death();
  } //------------------The program will skip down to here.
}

假设 baz() 改变了 $foo 的值,并且每次都不同。我希望我的代码在第一个语句之后继续测试 elseif/else 语句,并在它们为真时运行它们。

我不想再次运行整个函数(即我不在乎 $foo = 0 还是 1)。我正在寻找类似“继续;”的东西。无论如何,请让我知道这是否可能。谢谢。:)

编辑** 我的代码实际上比这更复杂。我只是为了理论而写下一些代码。我想要的只是脚本在通常不会的地方继续测试。

4

4 回答 4

7

如果我的理解正确,你想要做每个连续elseif的,不管之前的if/ s 是否匹配,但如果/ s都不elseif匹配,你还希望运行一些代码。在这种情况下,如果其中一个匹配,您可以设置一个要设置的标志,并使用s 代替。ifelseif$matchedtrueif

<?php
$foo=1;
function someFunction(){
  $matched = false;
  if($foo==0){
    bar();
    $matched = true;
  }
  if($foo==1){ //--This elseif will get executed, and after it's executed,
    baz();
    $matched = true;
  }
  if($foo==2){
    qux();
    $matched = true;
  }
  if($foo==3){
    quux();
    $matched = true;
  }
  if(!$matched){ /* Only run if nothing matched */
    death();
  }
}

如果您还希望能够跳到最后,请使用goto(但请先查看此内容):

<?php
$foo=1;
function someFunction(){
  $matched = false;
  if($foo==0){
    bar();
    $matched = true;
    goto end: // Skip to end
  }
  if($foo==1){ //--This elseif will get executed, and after it's executed,
    baz();
    $matched = true;
  }
  if($foo==2){
    qux();
    $matched = true;
  }
  if($foo==3){
    quux();
    $matched = true;
  }
  if(!$matched){ /* Only run if nothing matched */
    death();
  }
  end:
}
于 2012-05-21T20:52:55.913 回答
3

我不知道这是否是您的意思,但您可以使用switch语句:

$foo=1;
function someFunction(){
  switch($foo==0){
    case 0:
        bar();
    case 1:
        baz();
    case 2:
        qux();
    case 3:
        quux();
    default:
        death();
}

请注意,在每种情况下都不会中断。

于 2012-05-21T20:44:53.847 回答
1

你不能只使用 else if 而只是一堆 ifs ......

于 2012-05-21T20:42:34.813 回答
-1

// 此响应不正确。请参阅下面的评论。谢谢!

我不是专家,但按照我的理解,他们将继续运行。如果将来您正在编写一组elseif()语句,并且想要在其中一个为真时离开该系列,则使用该break命令。另请参阅switch()

如果我错了,我绝对愿意纠正。

于 2012-05-21T20:44:51.427 回答