PHP如何将一维扁平数组偶数位为键奇数位为值生成关联数组
问题原因
你当前代码的问题出在array_map的调用逻辑上:array_map会遍历$rinfo的每一个单个元素传入回调,此时回调拿到的$v是类似22、3这种单值字符串,你写的$v[0]实际是取字符串的第0位字符,$v[1]是取字符串的第1位字符,完全不符合「按奇偶索引成对取值」的预期,因此输出错误。
修正代码(支持同键值累加)
你可以直接用步长为2的循环实现需求,同时自动完成同键名的分数求和:
$rank = $_POST['ranking_details']; $rinfo = explode('_', $rank); $result = []; // 步长为2遍历,偶数位为键,相邻奇数位为值 for ($i = 0; $i < count($rinfo); $i += 2) { $key = $rinfo[$i]; $value = isset($rinfo[$i+1]) ? intval($rinfo[$i+1]) : 0; // 同键名自动累加 $result[$key] = isset($result[$key]) ? $result[$key] + $value : $value; } print_r($result);
输出效果
针对你给出的示例原始数组,运行后输出结果为:
Array ( [22] => 6 [27] => 2 [30] => 1 [25] => 2 [28] => 1 )
完全符合你需要的关联数组结构,且自动完成了重复键22的分数求和。
内容的提问来源于stack exchange,提问作者Zaheer Abbas
相关产品推荐
相关产品推荐

