0

我正在尝试调试这个聚合循环,我发现在第一种情况下完成“聚合”后,它会继续执行第二种情况“非聚合”。知道为什么会这样吗?

<?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

5

因为你忘记了你的break;陈述。

switch ($agg)
{
    case 'Aggregated':
        while ($m<=$i)
        {
            echo $bing_results[$m];
            echo $Faroo[$m];
            echo $Blekko[$m];
            echo 'Results AGG: '.$m;
            $m++;
        }         
        break; // this is where you need your break!
    case 'Non-Aggregated':
        while ($m<=$i)
于 2013-07-19T14:50:16.510 回答
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 回答
0

您忘记在 switch 中放置 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:56:19.273 回答