2011-05-17 42 views
0

我想获得循环循环,而不通过循环的所有代码。例如,在示例代码中,我希望继续循环,而不必通过匹配项下方的任何if语句。PHP鼓励循环通过循环的一部分

注意:我知道类似这个例子的东西会更好地使用switch语句来完成,但是我的if语句不像这样简单。

foreach($array as $key=>$value){ 
    if(is_varchar($value)){loop;} 
    if(is_text($value)){loop;} 
    if(is_mediumText($value)){loop;} 
    if(is_boolean($value)){loop;} 
    if(is_integer($value)){loop;} 
    if(is_float($value)){loop;} 
    if(is_double($value)){loop;} 
} 
+0

向我们显示实际报表会更好。 – 2011-05-17 12:19:47

+0

在匹配的条件下添加一个break语句? – AllisonC 2011-05-17 12:20:01

回答

1

看不出理由不使用这里switch

foreach ($x as $y) { 
    switch ($y) { 
    case 0: continue; break; 
    case 1: continue; break; 
    case 2: continue; break; 
    case 3: continue; break; 
    } 
} 

您可以完全忽略continue;,如果switch语句来是foreach -loop

foreach ($x as $y) { 
    switch ($y) { 
    case 0: doSomethingA(); break; 
    case 1: doSomethingB(); break; 
    case 2: doSomethingC(); break; 
    case 3: doSomethingD(); break; 
    } 
} 

更新中唯一一个(问题的更新后):

switch -statement仍然可用(在我看来更具可读性)

foreach($array as $key=>$value){ 
    switch (true) { 
    case is_varchar($value): continue; break; 
    case is_text($value): continue; break; 
    // And so on 
    } 
} 

只要代码不做任何事情,你也可以简化一点。

foreach($array as $key=>$value){ 
    switch (true) { 
    case is_varchar($value): 
    case is_text($value): 
     continue; 
    break; 
    // And so on 
    } 
} 
+0

如果您看到说明,我说如果我使用的是一组if语句,switch语句不起作用。我已经改变了示例代码来反映这一点。 – 2011-05-17 12:26:40

+0

@Brook:第一次没明白这一点,但无论如何:看不到问题:) – KingCrunch 2011-05-17 13:04:21

+0

我不知道你可以在这样的开关站中使用功能。我喜欢! – 2011-05-17 13:09:14

3

使用continue

继续被循环结构中使用跳过本次循环的休息,继续在条件评估的执行,然后下一次循环的开始。

3
foreach($x as $y){ 
    if($y==0){continue;} 
    if($y==1){continue;} 
    if($y==2){continue;} 
    if($y==3){continue;} } 

0

你的意思是这样吗?

foreach($x as $y) { 

    if ($y == 1) { 
     doThis(); 
     continue; 
    } 

    // or something like this? 
    switch($y) { 
      case 2: 
       doThat(); 
       continue; 
    } 
} 
+0

我不能使用switch语句,所以它会更像您的第一个示例。 – 2011-05-17 12:28:10