2011-05-17 79 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