Объединение массивов через один
объединяю два массива с помощью array_merge, но мне нужно чтобы через каждый 1 элемент массив №1 был вставлен элемент массива №2. Как такое реализовать? То есть поочередно
Ответы (2 шт):
Автор решения: Вася Воронцов
→ Ссылка
$arr1 = array(1, 5, 5, 6);
$arr2 = array(3, 5, 7, 8, 5);
$len2 = count($arr2);
$min = min(count($arr1), $len2);
$pos = 1;
$i = 0;
for ($i; $i < $min; $i++) {
array_splice($arr1, $pos, 0, $arr2[$i]);
$pos += 2;
}
if ($i < $len2) {
array_splice($arr1, $pos, 0, array_splice($arr2, $i, $len2));
}
var_dump($arr1);
Вывод
array(9) {
[0]=>
int(1)
[1]=>
int(3)
[2]=>
int(5)
[3]=>
int(5)
[4]=>
int(5)
[5]=>
int(7)
[6]=>
int(6)
[7]=>
int(8)
[8]=>
int(5)
}
$arr1 и $arr2 - исходные массивы. В цикле по порядку вставляем элементы из второго массива. Если вставили меньше, чем было в массиве, то вставляем это в конец первого.
Автор решения: Эдуард
→ Ссылка
Если массивы одинаковой длины, то можно так:
<?php
$a = [1, 3, 5];
$b = [2, 4, 6];
$c = [];
foreach ($a as $k => $v) {
$c[] = $v;
$c[] = $b[$k];
}
var_dump($c);
/*
array (size=6)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
5 => int 6
*/