Maybe I don't understand your situation fully but I don't see the need for array_merge_recursive()
Suppose you have data like this:
<?php
$carsResponse1 = array(
array(
'make' => 'Ford',
'price' => 3500
),
array(
'make' => 'GM',
'price' => 4900
)
);
$carsResponse2 = array(
array(
'make' => 'Acura',
'price' => 2300
),
array(
'make' => 'Toyota',
'price' => 3900
)
);
$combined = array_merge($carsResponse1, $carsResponse2);
print_r($combined);
Now, running that yields:
Array
(
[0] => Array
(
[make] => Ford
[price] => 3500
)
[1] => Array
(
[make] => GM
[price] => 4900
)
[2] => Array
(
[make] => Acura
[price] => 2300
)
[3] => Array
(
[make] => Toyota
[price] => 3900
)
)
=> non-recursive version of array merge should fit your needs.
As for the answer itself:
I don't see a problem with using arrays or multiple dimensions. Using ArrayIterator interface means only that objects of a class implementing that interface can use PHP's array syntax and iteration features to work with data in that class.
Whatever that class would do internally, would most certainly have to be implemented using PHP's arrays.
Using "plain" arrays wisely most likely performs CPU- and RAM-wise better than any fancier over-engineered custom-built solution.
If the data set you are prosessing is not massive (thousands to tens of thousands of records), I don't see a problem storing them in an array, if you truly have to process them all at once.
If it becomes a problem, you could look into pagination, so you are only processing a small amount of data at a time.
Actually designing your service from the start for pagination would be the best thing to do, instead of processing all the data at once, but since you didn't mention it I'm assuming all your external services can't handle pagination.