直接看示例代码
$planRet = array()//结果集
$planLivingClass = $planNormalClass = $planFinishedClass = [];//数组初始化
$planLivingCourse = $planNormalCourse = $planFinishedCourse = 0;
$currPlanIdArr = [];
foreach($planRet as $val){//遍历plan状态
if($val['status'] == 1){
$planNormalCourse++;
$planNormalClass[$val['fk_class']] = !empty($planNormalClass[$val['fk_class']]) ? $planNormalClass[$val['fk_class']]++ : 0;
}elseif($val['status'] == 3){
$planFinishedCourse++;
$planFinishedClass[$val['fk_class']] = !empty($planFinishedClass[$val['fk_class']]) ? $planFinishedClass[$val['fk_class']]++ : 0;
$finishedPlanId[$val['fk_class']] = $val['pk_plan'];
}elseif($val['status'] == 2){
$planLivingCourse++;
$planLivingClass[$val['fk_class']] = !empty($planLivingClass[$val['fk_class']]) ? $planLivingClass[$val['fk_class']]++ : 0;
$currPlanIdArr[$val['fk_class']] = $val['pk_plan'];
}
}
上面这段初一看似乎没有问题,其实已经掉坑里了,看改造后的代码
$planRet = array()//结果集
$planLivingClass = $planNormalClass = $planFinishedClass = [];//数组初始化
$planLivingCourse = $planNormalCourse = $planFinishedCourse = 0;
$currPlanIdArr = [];
foreach($planRet as $val){//遍历plan状态
if($val['status'] == 1){
$planNormalCourse++;
$planNormalClass[$val['fk_class']] = isset($planNormalClass[$val['fk_class']]) ? $planNormalClass[$val['fk_class']]++ : 1;
}elseif($val['status'] == 3){
$planFinishedCourse++;
$planFinishedClass[$val['fk_class']] = isset($planFinishedClass[$val['fk_class']]) ? $planFinishedClass[$val['fk_class']]++ : 1;
$finishedPlanId[$val['fk_class']] = $val['pk_plan'];
}elseif($val['status'] == 2){
$planLivingCourse++;
$planLivingClass[$val['fk_class']] = isset($planLivingClass[$val['fk_class']]) ? $planLivingClass[$val['fk_class']]++ : 1;
$currPlanIdArr[$val['fk_class']] = $val['pk_plan'];
}
}
总结下,数组定义和初始化的时候要注意,另外empty(0) 会返回true