У меня есть два массива ассоциативных массивов с разными ключами. Мне нужно объединить их в один массив ассоциативных массивов с нулями или пустыми строками для ключей, которые не существуют при более высоких индексах. Например:Объединение массивов ассоциативных массивов с пустыми значениями строк для отсутствующих ключей
$first = array(array('x'=>'1','y'=>'2'));
$second = array(array('z'=>'3'),array('z'=>'4'));
Результат должен выглядеть следующим образом:
$result = array(
array(
'x'=>'1',
'y'=>'2',
'z'=>'3'
),
array(
'x'=>'',
'y'=>'',
'z'=>'4'
)
);
Функция, которая объединяет эти массивы необходимо, чтобы иметь возможность работать с двумя или более массивов. Вот что я придумал:
// allArrays can be many arrays of all sizes and will be different each time this process runs
$allArrays = array($first, $second);
$longestArray = max($allArrays);
$data = array();
for($i = 0; $i < count($longestArray); ++$i) {
$dataRow = array();
foreach ($allArrays as $currentArray) {
if (isset($currentArray[$i])) {
foreach ($currentArray[$i] as $key => $value) {
$dataRow[$key] = $value;
}
} else {
foreach ($currentArray[0] as $key => $value) {
$dataRow[$key] = '';
}
}
}
$data[] = $dataRow;
}
Это работает, но я думаю, что вложенное для петель привести к снижению производительности на больших массивах, и это довольно неразборчиво. Есть ли лучший способ решить эту проблему?
Слияние встроенных функций нескольких элементов, которые могут помочь и сделать вашу жизнь немного легче, проверьте их в руководстве. –
Вы просмотрели http://php.net/manual/en/function.array-merge-recursive.php –
@SanderBackus, его результаты более сложны, чем результаты функций функций array_merge_recursive. –