PHP поощряет цикл частично через цикл - PullRequest
0 голосов
/ 17 мая 2011

Я хочу получить цикл, не пройдя весь код цикла.Например, в примере кода я хочу продолжить цикл без необходимости проходить через любые операторы if ниже того, который соответствует.

ПРИМЕЧАНИЕ: я знаю, что что-то похожее на этот пример будет лучше сделаноиспользуя оператор 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;}
}

Ответы [ 4 ]

3 голосов
/ 17 мая 2011
foreach($x as $y){
    if($y==0){continue;}
    if($y==1){continue;}
    if($y==2){continue;}
    if($y==3){continue;} }

?

3 голосов
/ 17 мая 2011

Использовать continue

continue используется в структурах цикла для пропуска оставшейся части итерации текущего цикла и продолжения выполнения при оценке условия, а затем в начале следующей итерации.

1 голос
/ 17 мая 2011

Не вижу причины НЕ использовать 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 все еще пригодно для использования (и, на мой взгляд, более читабельно)

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 голосов
/ 17 мая 2011

Вы имеете в виду, как это?

foreach($x as $y) {

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

    // or something like this?
    switch($y) {
          case 2:
              doThat();
              continue;
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...