如何合并字符串数组和整数数组,并在字符串数组中添加重复项的相应值


How to merge a string Array and an Integer Array and add the corresponding values of the duplicates in the String Array

我想合并两个数组并添加重复字符串的相应值。

我的代码是:

$ids='f5522a8cc736750fffe1a9b7aa72c7bf','f5522a8cc736750fffe1a9b7aa72c7bf','26ba78d98033416372c3314c784f7aac','26ba78d98033416372c3314c784f7aac','6e983831ac2a73469abb7f94bdb8887f','6e983831ac2a73469abb7f94bdb8887f','c6c5c00f7266ff3ca584662a0bc48bd3','c6c5c00f7266ff3ca584662a0bc48bd3'; $ids2 ='1','8','1','4','6','1','3','1'; $ids = explode(',',$ids); $ids2 = explode(',',$ids2); $a = $ids; $b = $ids2; $c = array_combine($a, $b); print_r($c);

我得到的是:

Array ( ['f5522a8cc736750fffe1a9b7aa72c7bf'] => '8' ['26ba78d98033416372c3314c784f7aac'] => '4' ['6e983831ac2a73469abb7f94bdb8887f'] => '1' ['c6c5c00f7266ff3ca584662a0bc48bd3'] => '1' )

我想要的是:

Array ( ['f5522a8cc736750fffe1a9b7aa72c7bf'] => '9' ['26ba78d98033416372c3314c784f7aac'] => '5' ['6e983831ac2a73469abb7f94bdb8887f'] => '7' ['c6c5c00f7266ff3ca584662a0bc48bd3'] => '4' )

您可以使用

此代码保留数组的所有值$b以进行计数xD

function array_combine_($keys, $values)
{
    $result = array();
    foreach ($keys as $i => $k) {
        $result[$k][] = $values[$i];
    }
    array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));
    return    $result;
}
$ids='f5522a8cc736750fffe1a9b7aa72c7bf,f5522a8cc736750fffe1a9b7aa72c7bf,26ba78d98033416372c3314c784f7aac,26ba78d98033416372c3314c784f7aac,6e983831ac2a73469abb7f94bdb8887f,6e983831ac2a73469abb7f94bdb8887f,c6c5c00f7266ff3ca584662a0bc48bd3,c6c5c00f7266ff3ca584662a0bc48bd3';
$ids2 ='1,8,1,4,6,1,3,1';
$ids = explode(',',$ids); $ids2 = explode(',',$ids2);
$a = $ids; $b = $ids2;
print_r(array_combine_($a, $b));

你会得到结果

Array ( 
    [f5522a8cc736750fffe1a9b7aa72c7bf] => Array ( [0] => 1 [1] => 8 ) 
    [26ba78d98033416372c3314c784f7aac] => Array ( [0] => 1 [1] => 4 ) 
    [6e983831ac2a73469abb7f94bdb8887f] => Array ( [0] => 6 [1] => 1 ) 
    [c6c5c00f7266ff3ca584662a0bc48bd3] => Array ( [0] => 3 [1] => 1 ) ) 

更新:使用此代码获取最终数组

$result = array_combine_($a, $b);
$new_result = array();
foreach ($result as $key => $value) {
  $new_result[$key] = array_sum($value);
}
print_r($new_result);

将获得:

Array ( 
[f5522a8cc736750fffe1a9b7aa72c7bf] => 9 
[26ba78d98033416372c3314c784f7aac] => 5 
[6e983831ac2a73469abb7f94bdb8887f] => 7 
[c6c5c00f7266ff3ca584662a0bc48bd3] => 4 ) 

希望这个帮助!!