PHP实现:按字符串数组重复项对数值数组对应值求和
解决方案:将关联数组拆分为两个对应顺序的索引数组
你已经完成了最核心的一步——通过遍历把重复标签对应的数值求和,得到了正确的关联数组结果!接下来要把这个关联数组拆成两个独立的索引数组,只需要借助PHP的array_keys()和array_values()两个内置函数就能轻松实现,而且完全能保持你需要的一一对应顺序。
完整代码示例
// 修正数组长度(和你的示例保持一致) $records_array = array("Coding", "Web development - Coding", "Meeting", "Coding", "Coding", "Content", "Coding", "Coding"); $quantities_array = array(3, 8, 1, 4.85, 1, 0.5, 6.01, 7); $new_array = array(); foreach ($records_array as $record_position => $new_array_key) { // 初始化键避免Undefined index警告 if (!isset($new_array[$new_array_key])) { $new_array[$new_array_key] = 0; } $new_array[$new_array_key] += $quantities_array[$record_position]; } // 拆分关联数组为两个目标数组 $dataCalcGraph = array_keys($new_array); // 去重后的标签数组 $dataLabelGraph = array_values($new_array); // 对应求和后的数值数组 // 验证结果 var_dump($dataCalcGraph); var_dump($dataLabelGraph);
代码说明
array_keys($new_array):提取关联数组的所有键,也就是你需要的去重后的字符串标签数组,顺序和你遍历插入关联数组的顺序完全一致,完美匹配你要求的一一对应规则;array_values($new_array):提取关联数组的所有值,也就是求和后的数值数组,顺序和array_keys()返回的标签数组严格对应;- 额外添加的
isset()判断,能避免第一次给未初始化的键赋值时出现Undefined index警告,让代码更健壮。
运行结果
执行后你会得到完全符合预期的两个数组:
$dataCalcGraph:array("Coding", "Web development - Coding", "Meeting", "Content")$dataLabelGraph:array(21.86, 8, 1, 0.5)
内容的提问来源于stack exchange,提问作者RustyNox
相关产品推荐
相关产品推荐

