php for循环与if为什么输出都是true
for($a=9;$a>=1;$a--){for($b=1;$b<=$a;$b++){if($a.'+'.$b.'=='.$a*$b){echo'*';}else{ech...
for ($a=9; $a>=1; $a--){
for ($b=1; $b<=$a; $b++){
if($a.'+'.$b.'=='.$a*$b){
echo '*';
}else{
echo 'no';
}
}
echo '<br>';
}
这个地方的输出值应该是为'no',但是还正常输出了 '*' 展开
for ($b=1; $b<=$a; $b++){
if($a.'+'.$b.'=='.$a*$b){
echo '*';
}else{
echo 'no';
}
}
echo '<br>';
}
这个地方的输出值应该是为'no',但是还正常输出了 '*' 展开
1个回答
展开全部
嗯,这个问题,你可能觉得出在判断上,if中的表达式,计算有问题,对吧
那我们看下if中都输出了些什么
for ($a=9; $a>=1; $a--){
for ($b=1; $b<=$a; $b++){
echo "$a.'+'.$b.'=='.$a*$b"; #我们看看表达式有啥
if($a.'+'.$b.'=='.$a*$b){
echo '*';
}else{
echo 'no';
}
}
echo '<br>';
}
string(16) "9.'+'.1.'=='.9*1"
string(16) "9.'+'.2.'=='.9*2"
string(16) "9.'+'.3.'=='.9*3"
string(16) "9.'+'.4.'=='.9*4"
string(16) "9.'+'.5.'=='.9*5"
string(16) "9.'+'.6.'=='.9*6"
string(16) "9.'+'.7.'=='.9*7"
string(16) "9.'+'.8.'=='.9*8"
string(16) "9.'+'.9.'=='.9*9"
string(16) "8.'+'.1.'=='.8*1"
string(16) "8.'+'.2.'=='.8*2"
string(16) "8.'+'.3.'=='.8*3"
string(16) "8.'+'.4.'=='.8*4"
string(16) "8.'+'.5.'=='.8*5"
string(16) "8.'+'.6.'=='.8*6"
string(16) "8.'+'.7.'=='.8*7"
string(16) "8.'+'.8.'=='.8*8"
string(16) "7.'+'.1.'=='.7*1"
string(16) "7.'+'.2.'=='.7*2"
string(16) "7.'+'.3.'=='.7*3"
string(16) "7.'+'.4.'=='.7*4"
string(16) "7.'+'.5.'=='.7*5"
string(16) "7.'+'.6.'=='.7*6"
string(16) "7.'+'.7.'=='.7*7"
string(16) "6.'+'.1.'=='.6*1"
string(16) "6.'+'.2.'=='.6*2"
string(16) "6.'+'.3.'=='.6*3"
string(16) "6.'+'.4.'=='.6*4"
string(16) "6.'+'.5.'=='.6*5"
string(16) "6.'+'.6.'=='.6*6"
string(16) "5.'+'.1.'=='.5*1"
string(16) "5.'+'.2.'=='.5*2"
string(16) "5.'+'.3.'=='.5*3"
string(16) "5.'+'.4.'=='.5*4"
string(16) "5.'+'.5.'=='.5*5"
string(16) "4.'+'.1.'=='.4*1"
string(16) "4.'+'.2.'=='.4*2"
string(16) "4.'+'.3.'=='.4*3"
string(16) "4.'+'.4.'=='.4*4"
string(16) "3.'+'.1.'=='.3*1"
string(16) "3.'+'.2.'=='.3*2"
string(16) "3.'+'.3.'=='.3*3"
string(16) "2.'+'.1.'=='.2*1"
string(16) "2.'+'.2.'=='.2*2"
string(16) "1.'+'.1.'=='.1*1"
然后你会发现,这些都是字符串,并且是一个非空的字符串
if(非空字符串) #肯定都是 true 的
如果你想计算,这么写就好
for ($a=9; $a>=1; $a--){
for ($b=1; $b<=$a; $b++){
if(($a+$b) == $a*$b){ #这里改一下,就正常了
echo '*';
}else{
echo 'no';
}
}
echo '<br>';
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询