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 */
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
2 jumps found. (Code = 44) Position 1 = 27, Position 2 = 8
Branch analysis from position: 27
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
2 jumps found. (Code = 44) Position 1 = 27, Position 2 = 8
Branch analysis from position: 27
Branch analysis from position: 8
filename:       /in/H96AS
function name:  (null)
number of ops:  31
compiled vars:  !0 = $a, !1 = $b, !2 = $afterEvery, !3 = $insertCount, !4 = $i, !5 = $count
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
    4     1        ASSIGN                                                   !1, <array>
    6     2        ASSIGN                                                   !2, 2
    7     3        ASSIGN                                                   !3, 1
    9     4        ASSIGN                                                   !4, 0
          5        COUNT                                            ~11     !1
          6        ASSIGN                                                   !5, ~11
          7      > JMP                                                      ->25
   10     8    >   INIT_FCALL                                               'array_splice'
   11     9        SEND_REF                                                 !0
   12    10        MUL                                              ~13     !2, !4
         11        ADD                                              ~14     !2, ~13
         12        MUL                                              ~15     !3, !4
         13        ADD                                              ~16     ~14, ~15
         14        SEND_VAL                                                 ~16
   13    15        SEND_VAL                                                 0
   14    16        INIT_FCALL                                               'array_slice'
         17        SEND_VAR                                                 !1
         18        MUL                                              ~17     !4, !3
         19        SEND_VAL                                                 ~17
         20        SEND_VAR                                                 !3
         21        DO_ICALL                                         $18     
         22        SEND_VAR                                                 $18
         23        DO_ICALL                                                 
    9    24        PRE_INC                                                  !4
         25    >   IS_SMALLER                                               !4, !5
         26      > JMPNZ                                                    ~21, ->8
   17    27    >   INIT_FCALL                                               'var_export'
         28        SEND_VAR                                                 !0
         29        DO_ICALL                                                 
   45    30      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
147.66 ms | 1396 KiB | 19 Q