3v4l.org

run code in 300+ PHP versions simultaneously
<?php $a = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9']; $b = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9']; $afterEvery = 2; $insertCount = 1; for ($i = 0, $count = count($b); $i < $count; ++$i) { array_splice( $a, # the array to be modified $afterEvery + $afterEvery * $i + $insertCount * $i, # each iteration must account for previously inserted elements 0, # do not consume any elements from $a array_slice($b, $i * $insertCount, $insertCount) # push array of element(s) into $a ); } var_export($a); /* insert 2 after every 1 every + (every * i) + (insert * i) 0 (insert @ 1) ... A B B A A A A A A A A A A 1 + (1 * 0) + (2 * 0) = 1 1 (insert @ 4) ... A B B A B B A A A A A A A 1 + (1 * 1) + (2 * 1) = 4 2 (insert @ 7) ... A B B A B B A B B A A A A 1 + (1 * 2) + (2 * 2) = 7 3 (insert @ 10) ... A B B A B B A B B A B B A 1 + (1 * 3) + (2 * 3) = 10 */ /* insert 1 after every 2 every + (every * i) + (insert * i) 0 (insert @ 2) ... A A B A A A A A A A A A A 2 + (2 * 0) + (1 * 0) = 2 1 (insert @ 5) ... A A B A A B A A A A A A A 2 + (2 * 1) + (1 * 1) = 5 2 (insert @ 8) ... A A B A A B A A B A A A A 2 + (2 * 2) + (1 * 2) = 8 3 (insert @ 11) ... A A B A A B A A B A A B A 2 + (2 * 3) + (1 * 3) = 11 */ /* insert 1 after every 3 every + (every * i) + (insert * i) 0 (insert @ 3) ... A A A B A A A A A A A A A 3 + (3 * 0) + (1 * 0) = 3 1 (insert @ 7) ... A A A B A A A B A A A A A 3 + (3 * 1) + (1 * 1) = 7 2 (insert @ 11) ... A A A B A A A B A A A B A 3 + (3 * 2) + (1 * 2) = 11 3 (insert @ 15) ... A A A B A A A B A A A B A 3 + (3 * 3) + (1 * 3) = 15 */ /* insert 3 after every 2 every + (every * i) + (insert * i) 0 (insert @ 2) ... A A B B B A A A A A A A A 2 + (2 * 0) + (3 * 0) = 2 1 (insert @ 7) ... A A B B B A A B B B A A A 2 + (2 * 1) + (3 * 1) = 7 2 (insert @ 12) ... A A B B B A A B B B A A B 2 + (2 * 2) + (3 * 2) = 12 3 (insert @ 17) ... A A B B B A A B B B A A B 2 + (2 * 3) + (3 * 3) = 17 */
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
array ( 0 => 'A1', 1 => 'A2', 2 => 'B1', 3 => 'A3', 4 => 'A4', 5 => 'B2', 6 => 'A5', 7 => 'A6', 8 => 'B3', 9 => 'A7', 10 => 'A8', 11 => 'B4', 12 => 'A9', 13 => 'B5', 14 => 'B6', 15 => 'B7', 16 => 'B8', 17 => 'B9', )

preferences:
131.21 ms | 403 KiB | 121 Q