У меня есть запрос, который я запускаю несколько раз с разными параметрами. Я использую парсер xml для возврата результатов в jQuery.
Я не могу найти способ объединить результаты на первом «узле» без перезаписи первой записи.
Упрощенный пример кода:
$temp1 = returnArray(0);
$temp2 = returnArray(1);
$data = array_merge($temp1, $temp2);
print_r($data);
function returnArray($switch)
{
if($switch == 0)
{
$data['data']['first'] = "something";
} else {
$data['data']['second'] = "something ELSE";
}
return $data;
}
приводит к распечатке Array ( [data] => Array ( [second] => something ELSE ) )
- $ temp2 перезаписывает $ temp1. Я понимаю, что это поведение по умолчанию для array_merge (), что меня смущает.
Я также пытался сделать что-то вроде $data = $temp1+$temp2;
или ...
$data = returnArray(0);
$data += returnArray(1);
отпечатки Array ( [data] => Array ( [first] => something ) )
или ...
$data = returnArray(0);
$data .= returnArray(1);
print_r($data);
отпечатков ArrayArray
В итоге я взломал это вместе:
$data['data'] = returnArray(0);
$data['data'] = returnArray(1);
function returnArray($switch){
if($switch == 0) return Array('first' => 'something');
else return Array('second' => 'something else');
}
Что меня не так устраивает ... Хотя в этом случае он выполняет свою работу, в будущем это будет не совсем применимо, когда возникнет более сложная ситуация.
Есть ли лучший способ взять два ассоциативных многомерных массива и объединить их без перезаписи?
EDIT:
Мне бы хотелось, чтобы метод был многоразовым, расширяемым и мог обрабатывать массивы 2+ с размерами 2+.