Поскольку ключ 'matches'
в первом массиве перезаписывается тем же ключом во втором.Вместо этого вам нужно сделать следующее:
$merge = array('matches' => array());
$a = array(
'matches' => array(
'5' => array('weight' => 6),
'15' => array('weight' => 6)
)
);
$b = array(
'matches' => array(
'25' => array('weight' => 6),
'35' => array('weight' => 6)
)
);
$merge['matches'] = array_merge($a['matches'], $b['matches']);
print_r($merge);
ОБНОВЛЕНИЕ
Чтобы сохранить цифровые клавиши, вам нужно будет сделать следующее:
$merge['matches'] = $a['matches'] + $b['matches'];
Если вы используете такой оператор объединения массивов, просто запомните следующее с php.net:
Ключи из первого массива будут сохранены.Если ключ массива существует в обоих массивах, то будет использоваться элемент из первого массива, а соответствующий элемент ключа из второго массива будет игнорироваться.
http://php.net/manual/en/function.array-merge.php