Объединение массивов, но второй массив сложит значения для первого массива

<?php
$keys = array(1,1,2,1,1);
$values = array(1,1,1,1,1);
$result = array_combine ($keys, $values);
?>

Я хочу добавить второй массив значений.
Например $result будет отображать вывод как

$result[1] = 4, // it will add the all values for the $keys of 1 ,
$result[2] = 1,

0

Решение

Вы могли бы использовать равнину foreach петля. Для заданных массивов $keys а также $values это будет производить $result:

$result = [];
foreach($keys as $i => $key) {
$result[$key] = (isset($result[$key]) ? $result[$key] : 0) + $values[$i];
}
1

Другие решения

Исходя из того, что вы ожидаете достичь, это возможное решение:

$keys = array(1,1,2,1,1);
$values = array(1,1,1,1,1);

$total = [];

foreach($keys as $index => $key){
if(!array_key_exists($key, $total)){
$total[$key] = 0;
}

$total[$key] += $values[$index];
}

print_r($total);
1

Вы можете сделать это

$keys = array(1,1,2,1,1);
$values = array(1,1,1,1,1);

$ids = $result = [];
foreach($keys as $index => $key) {
if (in_array($key, $ids)) {
$result[$key] += $values[$index];
} else {
$result[$key] = $values[$index];
}

$ids[] = $key;
}

echo"<pre>";
print_r($result);
0
По вопросам рекламы [email protected]