这段代码,当进入第一个if时,会判断$ch+$en+$ma>220,但是$ch+$en+$ma
<code><?php $ch=60; $ma=62; $en=65; if($ch>60&&$ma>60&&$en>60) { if($ch+$en+$ma>220) {$tg='合格';}; } else{ $tg='不合格'; } ?> <p><?php echo $tg; ?></p> </code>
这段代码,当进入第一个if时,会判断$ch+$en+$ma>220,但是$ch+$en+$ma
<code><?php $ch=60; $ma=62; $en=65; if($ch>60&&$ma>60&&$en>60) { if($ch+$en+$ma>220) {$tg='合格';}; } else{ $tg='不合格'; } ?> <p><?php echo $tg; ?></p> </code>
1.同一队if...else之间才会根据if中的条件是否满足跳转,不同的不会,哪怕是嵌套的。所以当你的if中嵌套的if条件不满足时,它会寻找有没有有它成对的else,很抱歉,这里没有与它配套的else,所以$tag会为空。
2.注意书写格式,代码的可读性,缩进,大括号的位置是紧跟在判断条件后面,操作符两边都要有空格。
<code><?php $ch = 60; $ma = 62; $en = 65; if($ch > 60 && $ma > 60 && $en>60) { if($ch + $en+ $ma > 220){ $tg = '合格'; }else{ $tg = '不合格'; } } else{ $tg = '不合格'; } ?> <p><?php echo $tg; ?></p> </code>
当然,xiayongsheng的那种写法更简洁,但可读性稍微差点。
后面的else是第一个if判断60的,里面的if没有else,也就是说,tg是空
可以修改如下
<code><?php $ch=60; $ma=62; $en=65; # 我觉得你漏了等于这个情况,所以加上了 $condition = ($ch+$en+$ma) >= 220 && $ch >= 60 && $ma >= 60 && $en >= 60; $tg = $condition ? '及格' : '不及格'; ?></code>
<code>if(明天下雨){ // 伞或雨衣 if(骑车) { // 雨衣 } } else { // 不带 }</code>
雨衣的前提是下雨。
if与else是成对出现的(但else不是必须的)。
最外围层级的if对应最外层的else,以此类推。