PHP多维数组中按重复键值对应元素求和问题求助
嘿,刚接触PHP不用慌,这个按键0分组求和的需求其实很好实现,我给你一步步拆解:
首先,先把你的数组片段整理成标准的PHP二维数组格式(你之前的输出其实是多个一维数组,实际应该是一个包含这些一维数组的二维数组):
$originalArray = [ [0 => 3, 1 => 1], [0 => 3, 1 => 2], [0 => 3, 1 => 128], [0 => 39, 1 => 4] ];
接下来分两步完成需求:
第一步:按键0的值分组求和
我们先创建一个临时数组,用键0的值作为新数组的键,用来累加对应的键1数值:
$summedGroups = []; foreach ($originalArray as $item) { // 提取当前项的键0值作为分组标识 $groupKey = $item[0]; // 提取当前项的键1值作为要累加的数 $valueToAdd = $item[1]; // 如果这个分组已经存在,就累加数值;否则初始化分组的初始值 if (isset($summedGroups[$groupKey])) { $summedGroups[$groupKey] += $valueToAdd; } else { $summedGroups[$groupKey] = $valueToAdd; } }
这一步之后,$summedGroups的结构会是[3 => 131, 39 => 4],已经完成了求和,但格式还不是你想要的。
第二步:转换成目标数组格式
把上面的键值对数组,转成每个元素都是[0 => 分组键, 1 => 求和值]的二维数组:
$resultArray = []; foreach ($summedGroups as $key => $total) { $resultArray[] = [0 => $key, 1 => $total]; }
验证结果
最后用print_r($resultArray)输出,就能得到你期望的结果:
Array ( [0] => Array ( [0] => 3 [1] => 131 ) [1] => Array ( [0] => 39 [1] => 4 ) )
整个逻辑很直观,先分组求和再调整格式,适合刚接触PHP的新手理解,要是有不懂的地方随时问!
内容的提问来源于stack exchange,提问作者Harvdawg
相关产品推荐
相关产品推荐

