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 */

preferences:
43.04 ms | 402 KiB | 5 Q