我正在尝试调试这个聚合循环,我发现在案例一完成'Aggregated'之后它会过去并且第二种情况也会进行'非聚合'。知道为什么会这样吗?
<?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;
}
}
?>
答案 0 :(得分: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)
答案 1 :(得分: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;
答案 2 :(得分:2)
如果您不希望代码也运行下一个案例,则需要在下一个break;
之前使用case
。
$m++;
}
break; //here
case 'Non-Aggregated':
请记住也要为其他人重复。
答案 3 :(得分:0)
break;
它就像是开关的希格斯玻色子粒子,用于,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)。
答案 4 :(得分:0)
您忘记在交换机中放置break
语句。
switch ($agg)
{
case 'Aggregated':
while ($m<=$i)
{
echo $bing_results[$m];
echo $Faroo[$m];
echo $Blekko[$m];
echo 'Results AGG: '.$m;
$m++;
}
break;