Это не очень эффективная структура. Вы рассматривали возможность объединения в этой форме?
array
(
10 => 6,
11 => 2,
);
Это позволило бы быстрый поиск ключа по ID.
Чтобы объединить ваш первый массив в эту форму, просто сделайте это:
$array2 = array();
foreach($array1 as $row)
{
if(isset($array2[$row['id']]))
$array2[$row['id']] += $row['value'];
else
$array2[$row['id']] = $row['value'];
}
Что даст вам массив в виде:
$array2 = array
(
10 => 6,
11 => 2,
);
Если вам действительно нужно это в запрошенной форме, это сделает еще один цикл обработки ...
$array3 = array();
foreach($array2 as $id => $value)
{
$array3[] = array('id' => $id, 'value' => $value);
}
Итак, поехали!
<ч />
И более компактный:
$array2 = array();
foreach($array1 as $row)
$array2[$row['id']] = (isset($array2[$row['id']]) ? $array2[$row['id']] : 0) + $row['value'];
$array3 = array();
foreach($array2 as $id => $value)
$array3[] = array('id' => $id, 'value' => $value);