if和elseif连用的一些细节问题
今天在写后台的时候设计到了多个if的连用,由于个人习惯问题,并没有在意if和elseif的区别,结果发现了一些问题,废话少说看代码。
$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这种结构,良好习惯很重要。
本文探讨了在编程中if和elseif连用时出现的问题,特别是在多个条件判断场景下。通过实例代码解释了如何因为忽视if和elseif的区别导致逻辑错误,并建议在编写多条件判断时采用标准结构,以养成良好的编程习惯。
602

被折叠的 条评论
为什么被折叠?



