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',但是还正常输出了 '*'
展开
 我来答
52一天才_
2017-10-20
知道答主
回答量:26
采纳率:100%
帮助的人:8万
展开全部

嗯,这个问题,你可能觉得出在判断上,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>';
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式