if和elseif连用的一些细节问题

本文探讨了在编程中if和elseif连用时出现的问题,特别是在多个条件判断场景下。通过实例代码解释了如何因为忽视if和elseif的区别导致逻辑错误,并建议在编写多条件判断时采用标准结构,以养成良好的编程习惯。

if和elseif连用的一些细节问题

今天在写后台的时候设计到了多个if的连用,由于个人习惯问题,并没有在意ifelseif的区别,结果发现了一些问题,废话少说看代码。

 $freq_cnt = 0;
 if($key == 'freq_cnt_group') {
    $freq_symbol = substr($value, 0, 1);
    $freq_number = (float)substr($value, 1);
    if ($freq_cnt == 0) {
            $query = $query->leftJoin('AppBundle:Samples', 'sn', 'with', 'p.sample_code =sn.sample_code')->leftJoin('AppBundle:SystemFalsePositive', 'sfp', 'with', 'p.gene_name=sfp.gene_name and p.hgvs_cds = sfp.hgvs_cds and sn.test_code = sfp.test_code')->andWhere("sfp.rate_group $freq_symbol :freq_number")->setParameter('freq_number', (float)$freq_number);
            $freq_cnt = $freq_cnt + 1;
     }
    if($freq_cnt == 1){
                    $query = $query->andWhere("sfp.rate_group $freq_symbol :freq_number")->setParameter('freq_number', (float)$freq_number);
    }
 }

其实从就是第二个if($freq_cnt == 1)这里出了问题,我的本意是如果最外层freq_cnt为1的时候才执行第二个if,但是其实只要执行了第一个if ,由于$freq_cnt = $freq_cnt + 1的存在,freq_cnt会立马变为1,遇到第二个if正好可以执行。这里其实只要把第二个更改为elseif就可以了。
思考:遇到多个条件判断的时候,不能糊里糊涂一直if(新手的毛病),应该使用多条件判断的标准结构:if...elseif....else这种结构,良好习惯很重要。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值