Начнем с того, что изначально все было не так, как
Начнем с того, что изначально все было не так, как надо. А если рассматривать предложенный вариант, то здесь не просто b; Здесь вот так:
$a; $b;
$c = $a;
$a = $c + $b;
Это не очевидно, но по сути примерно это и происходит, так как исходному массиву выполняется полное присвоение всех элементов. В случае же перебора имеющиеся уже объекты вообще никак не затрагиваются (только перетираются те, которые должны перетереться).