Здравствуйте, есть два однотипных многомерных массива, вот пример
$first_arr =[
'date1' => ['type_1' => 'counts'],
'date2' => ['type_1' => 'counts'],
'date3' => ['type_1' => 'counts']
];
$second_arr =[
'date1' => ['type_2' => 'counts'],
'date2' => ['type_2' => 'counts'],
'date3' => ['type_2' => 'counts']
];
Необходимо объединить их так, что бы получился следующий массив:
$result_arr =[
'date1' => ['type_1' => 'counts', 'type_2' => 'counts'],
'date2' => ['type_1' => 'counts', 'type_2' => 'counts'],
'date3' => ['type_1' => 'counts', 'type_2' => 'counts']
];
Казалось бы - основа основ, но не получается сделать так, как нужно. Делаю так:
foreach ($first_arr as $key => $value){
$data[$key] = ['type_1' => $value['counts']];
}
foreach ($second_arr as $key => $value) {
array_push($data[$key], $value['counts']);
}
Результат :
$result_arr =[
'date1' => ['type_1' => 'counts', 0 => 'counts'],
'date2' => ['type_1' => 'counts', 1 => 'counts'],
'date3' => ['type_1' => 'counts', 2' => 'counts']
];
Возможно, можно обойтись более элегантным решением?
Так не пойдёт?
foreach ($second_arr as $key => $value) {
$data[$key] += ['type_2' => $value['counts']];
}
А ещё можно сделать вот так:
foreach ($first_arr as $key => $value){
$data[$key] = $value;
}
foreach ($second_arr as $key => $value){
$data[$key] += $value;
}
Ведь значением $value
является вложенный массив.
Еще более элегантное решение, использовать функцию array-merge-recursive
Пример
$first_arr =[
'date1' => ['type_1' => 'counts'],
'date2' => ['type_1' => 'counts'],
'date3' => ['type_1' => 'counts']
];
$second_arr =[
'date1' => ['type_2' => 'counts'],
'date2' => ['type_2' => 'counts'],
'date3' => ['type_2' => 'counts'],
'date4' => ['type_2' => 'counts']
];
$res_array = array_merge_recursive($first_arr, $second_arr);
print_r($res_array);
вернет вам
Array
(
[date1] => Array
(
[type_1] => counts
[type_2] => counts
)
[date2] => Array
(
[type_1] => counts
[type_2] => counts
)
[date3] => Array
(
[type_1] => counts
[type_2] => counts
)
[date4] => Array
(
[type_2] => counts
)
)
Насколько я понял вопрос, именно это и было нужно. При этом, сработает даже если количество элементов в массивах разное.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Например, в массиве есть ключ answer, со значением 2 и надо сделать, что бы появилась форма, с радиокнопками и автоматически, была нажата вторая
Добрый день! Нужно поместить на страницу с заказом скрипт (js массив dataLayer с данными для GTM)Но, выполниться он должен при первом просмотре страници...