Объединение массивов через один

объединяю два массива с помощью 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
*/
→ Ссылка