0

この集約ループをデバッグしようとしていますが、ケース 1 が「集約」された後、2 番目のケース「非集約」も実行されることがわかりました。なぜこれが起こっているのですか?

<?php
$agg =  $_POST['agg'];
$m=0;
$j=0;
switch ($agg)
{
    case 'Aggregated':
    while ($m<=$i)
    {
        echo $bing_results[$m];
        echo $Faroo[$m];
        echo $Blekko[$m];
        echo 'Results AGG: '.$m;
        $m++;
    }         
    case 'Non-Aggregated':
    while ($m<=$i)
    {
       echo $Blekko[$m];
       $m++;
       echo 'Results NAG: '.$m;
    }
    $m=0;
    while ($m<=$i)
    {
        echo $Faroo[$m];
        $m++;
        echo 'Results: NAG '.$m;
    }
    $m=0;
    while ($m<=$i)
    {
        echo $bing_results[$m];
        $m++;
        echo 'Results: NAG '.$m;
    }
case 'Bing':
    while ($m<=$i)
     {
        echo $bing_results[$m];
        $m++;
        echo 'Results: Bi '.$m;
    }
case 'Blekko':
    while ($m<=$i)
    {
        echo $Blekko[$m];
        $m++;
        echo 'Results: BL '.$m;
    }
case 'Faroo':
    while ($m <=$i)
    {
        echo $Faroo[$m];
        $m++;
        echo 'Results: F '.$m;
    } 
}

?>
4

5 に答える 5

2

breakスイッチにステートメントがないためです。

switch ($agg)
{
case 'Aggregated':
while ($m<=$i)
{
    echo $bing_results[$m];
    echo $Faroo[$m];
    echo $Blekko[$m];
    echo 'Results AGG: '.$m;
    $m++;
}
break;
于 2013-07-19T14:50:34.463 に答える
2

コードで次のケースも実行したくない場合はbreak;、次の前に使用する必要があります。case

    $m++;
}
break; //here
case 'Non-Aggregated':

他の人についても繰り返すことを忘れないでください。

于 2013-07-19T14:50:42.763 に答える
0
break;

スイッチ、for、foreach、while ループのヒッグス粒子のようなものです。

切れ目のないスイッチを使用すると、一致するスイッチを見つけて道を進みます。したがって、値が 2 であると想像してください。

$i = 0;

switch($value) {
    case 1:
        $i += 1;
    case 2:
        $i += 2;
    case 3:
        $i += 3;
    case 4:
        $i += 4;
}

値は 9 になります。これは、2 を足してから 3 を足し、次に 4 を足す (2+3+4 = 9) ためです。

于 2013-07-19T14:54:42.633 に答える