PHP循环内按指定条件统计数组元素数量的实现疑问
PHP循环内统计指定数组元素数量的解决方案
你的示例数组:
$array_test = array("gren","green","red","red","green","blue");
之前的写法问题在于没有初始化计数器,也没有执行累加操作,所以无法得到正确统计结果。下面是两种可行的实现方式:
方式一:针对固定目标值逐个统计
先在循环外初始化对应计数器,循环内匹配到目标元素时累加:
// 初始化计数器 $countGreen = 0; $countRed = 0; $countBlue = 0; $array_test = array("gren","green","red","red","green","blue"); foreach($array_test as $array_ts) { if($array_ts == "green") { $countGreen++; // 匹配到green时计数器+1 } elseif($array_ts == "red") { $countRed++; } elseif($array_ts == "blue") { $countBlue++; } } // 查看结果 echo "green 数量:{$countGreen}\n"; echo "red 数量:{$countRed}\n"; echo "blue 数量:{$countBlue}\n";
方式二:动态适配多目标值(适合复杂场景)
如果需要统计的目标值较多,或者数组结构更复杂,可以用动态数组来管理计数器,避免重复的if判断:
// 定义需要统计的目标值 $targetValues = ["green", "red", "blue"]; // 初始化计数器数组,所有目标值初始计数为0 $counts = array_fill_keys($targetValues, 0); $array_test = array("gren","green","red","red","green","blue"); foreach($array_test as $item) { // 判断当前元素是否在目标列表中,是则累加对应计数 if(in_array($item, $targetValues)) { $counts[$item]++; } } // 输出统计结果 print_r($counts);
运行后两种方式都能得到正确的统计结果:green为2,red为2,blue为1。
内容的提问来源于stack exchange,提问作者Jean
相关产品推荐
相关产品推荐

