代码是<?php
$a=5;
$b=10;
while($a<10)
{
echo 'a='.$a.'<br/>';
while ($b>0)
{
echo 'b='.$b.'<br/>';
$b--;
if ($b==3)
break ;
}
$a++;
echo 'h a='.$a.'<br>';
if($a==30)
break;
}
?>
输出结果为:
a=5
b=10
b=9
b=8
b=7
b=6
b=5
b=4
h a=6
a=6
b=3
b=2
b=1
h a=7
a=7
h a=8
a=8
h a=9
a=9
h a=10
我的问题是上面设置了如果b等于3,那么就break掉,为啥到了b等于三的时候还继续连着输出了b=3 b=2 b=1按照我的想法应该就会直接输出ha的值了或者输出一个b的值然后输出一个ha的值,不应该是连续输出3个b的值啊.还有在php中=与==有啥区别呢,为啥我把条件中的if ($b==3) 的==改成=之后结果变化很大。
希望达人能指点下小弟
<?php
function debug( $a , $b ){
printf( "<b>a=%d,b=%d</b><br />" , $a , $b );
}
$a=5;
$b=10;
while( $a<10 ){
debug( $a , $b );
echo 'a='.$a.'<br/>';
while ($b>0){
debug( $a , $b );
echo 'b='.$b.'<br/>';
$b--;
if ($b==3){
echo "<span style='color:red'>b=3 has break</span><br/>";
break ;
}
}
$a++;
echo 'h a='.$a.'<br>';
if($a==30){
echo "<span style='color:red'>a=30 has break</span></br>";
break;
}
}
?>
我加了点东西,,你运行下看看,,
因为break虽然跳出了一次内循环,,
但是外循环仍会执行,,因此在b=3的情况下
仍然会执行三次内循环(就是输出b值的那个)
另外‘=’未赋值运算,,右边的表达式付给左值
而'=='为比较运算,,比较左右两边表达式值是否相等,,返回一个bool值
建议你多看看手册。
function debug( $a , $b ){
printf( "<b>a=%d,b=%d</b><br />" , $a , $b );
}
$a=5;
$b=10;
while( $a<10 ){
debug( $a , $b );
echo 'a='.$a.'<br/>';
while ($b>0){
debug( $a , $b );
echo 'b='.$b.'<br/>';
$b--;
if ($b==3){
echo "<span style='color:red'>b=3 has break</span><br/>";
break ;
}
}
$a++;
echo 'h a='.$a.'<br>';
if($a==30){
echo "<span style='color:red'>a=30 has break</span></br>";
break;
}
}
?>
我加了点东西,,你运行下看看,,
因为break虽然跳出了一次内循环,,
但是外循环仍会执行,,因此在b=3的情况下
仍然会执行三次内循环(就是输出b值的那个)
另外‘=’未赋值运算,,右边的表达式付给左值
而'=='为比较运算,,比较左右两边表达式值是否相等,,返回一个bool值
建议你多看看手册。
温馨提示:答案为网友推荐,仅供参考