array ( [615] => 赣州 [510] => 南昌 [485] => 九江 [375] => 南昌 [350] => 赣州 [295] => 九江 [280] => 九江 )
如何把键值相同的合并,并且把键名的值相加,然后按照键名的值的大小形成一个新的数组,请高人指点。
回复讨论(解决方案) error_reporting(e_all ^ e_notice);$a = array ( 615 => '赣州', 510 => '南昌', 485 => '九江', 375 => '南昌', 350 => '赣州', 295 => '九江', 280 => '九江' );foreach($a as $v=>$k) { $b[$k] += $v;}$b = array_flip($b);print_r($b);
array
(
[965] => 赣州
[885] => 南昌
[1060] => 九江
)
不写了,给你个思路
原数组a
array_value 或 arra_unique 提取值作为数组b
循环
原数组 array_intersect 和 b 的每一项求交集 c[i]
array_keys 求 c[i]的键,顺便sum c[i]
用c[i]和b对应生成数组,你在循环内做对应不难,排序输出
手快,有点误
原数组a
array_value 或 arra_unique 提取a的值作为数组b
循环
原数组 array_intersect 和 b 的每一项求交集 c[i]
array_keys 求 c[i]的键,顺便sum d[i]
用d[i]和b对应生成数组,你在循环内做对应不难,排序输出