>888-889
エスパーだから答えてあげる。恐らく下のうちのいずれかが原因。つまりPHPは間違えてなくて君が間違えている

1、null値が要素の中に入ってる。nullが入ってる場合は対象の要素を詰めてマージされるよ
2、配列のキーが文字列で指定されていて、配列Aと配列Bで同様の文字列キーを使用している。配列の文字列キーが同じ内容だと後列の文字列キーの配列要素で上書きされるよ。以下は例

$arr1 = ['key' => 'value1'];
$arr2 = ['key' => 'value2'];
$result = array_merge($arr1, $arr2);
// 結果: ['key' => 'value2']

3、配列ではない値を引数に入れてる。array_merge()に配列以外の引数を渡すと警告が発生して予期しない結果になる可能性があるよ。

1と2の合わせ技の可能性もあるな。なんにしてもドキュメント読む癖付けた方がいいぞ。