PHPジャンプループを解析する方法およびcontinue,break,exitの違いの紹介

3627 ワード

PHPにおけるループ構造は,ほぼforループ,whileループ,do{}whileループおよびforeachループのいくつかあり,いずれのループにおいても,
PHPからの飛び出しサイクルには、コード:
コードは次のとおりです.
 
  
<?php
$i = 1;
while (true) { //
    if ($i==2) {// 2
        $i++;
        continue;
    } else if ($i==5) {// $i=5
        break;
    } else {
        echo $i . '<br>';
    }
    $i++;
}
exit;
echo ' ';
?>

結果:
1
3
4
continue continueは、ループ構造で使用され、制御プログラムが今回のループcontinue文の後のコードを放棄し、次のループに移行するために使用されます.continue自体はループ構造から飛び出していないが,今回のループを放棄するだけである.if文、switch文などの非ループ構造でcontinueを使用すると、プログラムがエラーになります.
たとえば、次のPHPコードセグメントでは、
 
  
<?php
for($i = 1;$i <= 100; $i++ ){
if($i % 3 == 0 || $i % 7 == 0){
continue;
}
& #160;  else{
echo”$i
<br/>”;
}
}
?>

PHPのコードフラグメントの役割は出力100以内で、7でも3でも割り切れない自然数を出力し、ループでif条件文で割り切れる数を判断してcontinueを実行することである.文は、そのまま次のループに入ります.次の出力文は実行されません.
break breakは、上述した様々なループおよびswitch文で使用される.彼の役割は、現在の文法構造から飛び出して、次の文を実行することです.break文はパラメータnを持つことができ、ループから飛び出したレイヤ数を表すことができ、多重ループから飛び出したい場合は、飛び出したレイヤ数をnで表すことができ、パラメータを持たない場合はデフォルトで本重ループから飛び出します.
この多重ループネストの例を見てみましょう.
 
  
for($i = 1;$i <= 10; $i++ ){
for($j = 1;$j <= 10;$j++){
$m = $i * $i + $j * $j;
echo”$m
<br/>”;
if($m < 90 || $m > 190) {
break 2;
}
}
}

ここではbreak 2を使って二重ループを飛び出しました.一目試して、2を取り除くことができます.得られた結果は全然違います.パラメータを使用しない場合は、このループだけが飛び出し、最初のレイヤループが実行されます.
goto gotoは実際には演算子にすぎず、他の言語と同様にPHPでもgotoの乱用を奨励せず、gotoの乱用はプログラムの可読性を深刻に低下させる.gotoの役割は、プログラムの実行を現在の位置から他の任意の位置にジャンプすることであり、goto自体は終了するループの役割はないが、そのジャンプ位置の役割は、ジャンプループとして使用できるようにする.しかしPHP 5.3以上のバージョンでgotoのサポートが停止しているので、gotoの使用はできるだけ避けるべきです.
次はgotoジャンプループを用いた例です
 
  
for($i = 1000;$i >= 1 ; $i– ){
if( sqrt($i) <= 29){
goto a;
}
echo “$i”;
}
a:
echo” this is the end”;

例ではgotoを用いてループを飛び出し,1000以内を検出し,それらの数の平方根が29より大きい.
exit
exitはプログラム実行を終了するために使用されます.どこでも使えるし、それ自体がループから飛び出す意味はありません.exitはパラメータを持つことができ、パラメータが文字列であればPHPは直接文字列を出力し、パラメータがinteger整形(範囲は0-254)であれば、そのパラメータは終了状態として使用されます.
コードは次のとおりです.
 
  
<?php
for($i = 1000;$i >= 1 ; $i– ){
if( sqrt($i) >= 29){
echo”$i
<br/>”;
}
else{
exit;
}
}
echo” ”;
?>

上記の例では、ループからコードの実行を直接終了すると、後続のコードが実行されず、php webページ内であればexitの後ろのhtmlコードさえ出力されません.
return return文は、コードを終了し、パラメータを返すために使用されます.1つの関数から呼び出すこともできますし、1つのinclude()またはrequire()文に含まれるファイルから呼び出すこともできます.メインプログラムで呼び出すこともできます.関数で呼び出すとプログラムはすぐに実行を終了してパラメータを返します.include()またはrequire()文に含まれるファイルで呼び出されると、プログラム実行はすぐにファイルを呼び出すプログラムに戻ります.戻り値はinclude()またはrequire()の戻り値として使用されます.プライマリ・プログラムで呼び出されると、プライマリ・プログラムはすぐに実行を停止します.
 
  
<?php
for($i = 1000;$i >= 1 ; $i– ){
if( sqrt($i) >= 29){
echo”$i
<br/>”;
}
else{
return;
}
}
echo” ”;
?>

ここの例は、上記のexitを使用する効果と同じです.
ループ終了条件で、自然に飛び出します
これはもちろん、サイクルがサイクルの臨界条件を満たすと、自分で退出することであることを理解したほうがよい.