请看这段php代码
高洛峰
高洛峰 2017-04-10 18:06:06
[PHP讨论组]

这段代码,当进入第一个if时,会判断$ch+$en+$ma>220,但是$ch+$en+$ma<220,事件流是不是就会跳出这个if,执行后面的else?

<?php 
$ch=60;
$ma=62;
$en=65;

if($ch>60&&$ma>60&&$en>60)
{
    if($ch+$en+$ma>220)
    {$tg='合格';};
}
else{
$tg='不合格';
}
?>
<html>
<p><?php echo $tg; ?></p>
</html>
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
迷茫

1.同一队if...else之间才会根据if中的条件是否满足跳转,不同的不会,哪怕是嵌套的。所以当你的if中嵌套的if条件不满足时,它会寻找有没有有它成对的else,很抱歉,这里没有与它配套的else,所以$tag会为空。
2.注意书写格式,代码的可读性,缩进,大括号的位置是紧跟在判断条件后面,操作符两边都要有空格。

<?php 
$ch = 60;
$ma = 62;
$en = 65;

if($ch > 60 && $ma > 60 && $en>60)
{
    if($ch + $en+ $ma > 220){
        $tg = '合格';
    }else{
        $tg = '不合格';
    }
}
else{
    $tg = '不合格';
}
?>
<html>
<p><?php echo $tg; ?></p>
</html>

当然,xiayongsheng的那种写法更简洁,但可读性稍微差点。

ringa_lee

后面的else是第一个if判断60的,里面的if没有else,也就是说,tg是空
可以修改如下

<?php 
$ch=60;
$ma=62;
$en=65;
# 我觉得你漏了等于这个情况,所以加上了
$condition = ($ch+$en+$ma) >= 220 && $ch >= 60 && $ma >= 60 && $en >= 60;
$tg = $condition ? '及格' : '不及格';
?>
黄舟
if(明天下雨){
   // 伞或雨衣
   if(骑车) {
      // 雨衣
   } 
} else {
   // 不带
}

雨衣的前提是下雨。

伊谢尔伦

if与else是成对出现的(但else不是必须的)。
最外围层级的if对应最外层的else,以此类推。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号