Как объединить массив с дубликатами ключей с массивом слияния?

$cat1=array( "_id"=>new MongoId("562918fc2bad8c345d000029"),"name"=>"Category Two");


$cat2=array("_id"=>new MongoId("562918e62bad8c445d000029"),
"name"=>"Category One");

$categories=array();

$categories=array_merge($cat1,$cat2);

print_r($categories);

но возвращается как следует

 array("_id"=>new MongoId("562918e62bad8c445d000029"),
"name"=>"Category One")

Я тоже пробовал array_unique

array_unique(array_merge($cat1,$cat2))

Но результат был такой же, как и выше

Я знаю, что это не объединяет оба массива, потому что оба имеют одинаковые ключи массива.
Вместо этого это слияние второго в первый массив, но как мне объединить оба массива, чтобы он выглядел следующим образом.

array(array( "_id"=>new MongoId("562918fc2bad8c345d000029"),"name"=>"Category Two"),array("_id"=>new MongoId("562918e62bad8c445d000029"),
"name"=>"Category One"));

Посмотрите на живой код
http://viper-7.com/Oaa4zL

1

Решение

Если вы не знаете, сколько будет категорий, вы можете просто поместить их в массив.

$allCat = array();
$allCat[] = $cat1;
$allCat[] = $cat2;
.
.
.
$allCat[] = $catN;

print_r($allCat);
1

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

Вы можете сделать это вручную и добавить их оба в массив:

print_r(array(
$cat1,
$cat2
));
1

Не нужно их объединять

$categories[] = array("_id"=>new MongoId("562918fc2bad8c345d000029"),
"name"=>"Category Two");

$categories[] = array("_id"=>new MongoId("562918e62bad8c445d000029"),
"name"=>"Category One");
1