web-dev-qa-db-ja.com

php-ネストされたループ、内部ループを解除してメインループを続行

次のループがあり、内側のループ内のチェックが条件を満たしたときにwhileループをcontinueしたいと思います。私は解決策を見つけました こここれは次の例で適用されます)、しかしそれはc#のためのものです。

    $continue = false;
    while($something) {

       foreach($array as $value) {
        if($ok) {
          $continue = true;
           break;
           // continue the while loop
        }

           foreach($value as $val) {
              if($ok) {
              $continue = true;
              break 2;
              // continue the while loop
              }
           }
       }

      if($continue == true) {
          continue;
      }
    }

PHPは、内部ループがcontinue-されたときに、メインループをbreakする方法を独自に構築していますか?

9
Ari

この質問へのコメント(作成者によって削除されました)を読んで少し調べたところ、continueと同じようにbreakのパラメーターもあることがわかりました。 。次のようにcontinueに番号を追加できます。

while($something) {

   foreach($array as $value) {
    if($ok) {
       continue 2;
       // continue the while loop
    }

       foreach($value as $val) {
          if($ok) {
          continue 3;
          // continue the while loop
          }
       }
   }
}
18
Ari

完全な内部foreachを処理するまで、continueを実行していないので、関係ないと思います。 continueをその場で実行し、ループが終了するまで待たないようにする必要があります。

コードをこれに変更します

while($something) {

    foreach($array as $value) {
        if($ok) {
            continue;    // start next foreach($array as $value)
        }

        foreach($value as $val) {
            if($ok) {
               break 2;    // terminate this loop and start next foreach($array as $value)
            }
        }
    }

}

RE:あなたのコメント

while($something) {

    if($somevalue) {
        // stop this iteration
        // and start again at iteration + 1
        continue;    
    }


}
0
RiggsFolly