3v4l.org

run code in 500+ PHP versions simultaneously
<?php $a = [1, 2]; $b = $a; $a[] = 3; $b[] = 4; echo "When next index=2 and max key=2, next key is both 2.\n"; var_dump($a, $b); // $a = [0=>1, 1=>2, 2=>3] $b = [0=>1, 1=>2, 2=>4] $a = [1, 2]; unset($a[1]); $b = $a; $a[] = 3; $b[] = 4; echo "\nWhen next index=2 and max key=1, next key is both 2. \n"; var_dump($a, $b); // $a = [0=>1, 2=>3] $b = [0=>1, 2=>4] $a = [1, 2]; unset($a[1], $a[0]); $b = $a; $a[] = 3; $b[] = 4; echo "\nWhen next index=2 and max key=0, next key is 0 or 2."; var_dump($a, $b); // $a = [0=>3] $b = [2=>4] what? $a = [1, 2]; unset($a[1], $a[0]); $b = $a; $b[] = 4; $a[] = 3; echo "\nIf reverse variable, result is reverse too.\n"; var_dump($a, $b); // $a = [2=>3] $b = [0=>4] what?? $a = [1, 2]; unset($a[1], $a[0]); $b = $c = $d = $a; $a[] = 3; $b[] = 4; $d[] = 6; $c[] = 5; echo "\nWhen increase variables, only the last one take over key..\n"; var_dump($a, $b, $c, $d); // $c's key is 2, others are 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/TYc10
function name:  (null)
number of ops:  71
compiled vars:  !0 = $a, !1 = $b, !2 = $c, !3 = $d
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, <array>
    4     1        ASSIGN                                                       !1, !0
    6     2        ASSIGN_DIM                                                   !0
          3        OP_DATA                                                      3
    7     4        ASSIGN_DIM                                                   !1
          5        OP_DATA                                                      4
    9     6        ECHO                                                         'When+next+index%3D2+and+max+key%3D2%2C+next+key+is+both+2.%0A'
   10     7        INIT_FCALL                                                   'var_dump'
          8        SEND_VAR                                                     !0
          9        SEND_VAR                                                     !1
         10        DO_ICALL                                                     
   13    11        ASSIGN                                                       !0, <array>
   14    12        UNSET_DIM                                                    !0, 1
   15    13        ASSIGN                                                       !1, !0
   17    14        ASSIGN_DIM                                                   !0
         15        OP_DATA                                                      3
   18    16        ASSIGN_DIM                                                   !1
         17        OP_DATA                                                      4
   20    18        ECHO                                                         '%0AWhen+next+index%3D2+and+max+key%3D1%2C+next+key+is+both+2.+%0A'
   21    19        INIT_FCALL                                                   'var_dump'
         20        SEND_VAR                                                     !0
         21        SEND_VAR                                                     !1
         22        DO_ICALL                                                     
   24    23        ASSIGN                                                       !0, <array>
   25    24        UNSET_DIM                                                    !0, 1
         25        UNSET_DIM                                                    !0, 0
   26    26        ASSIGN                                                       !1, !0
   28    27        ASSIGN_DIM                                                   !0
         28        OP_DATA                                                      3
   29    29        ASSIGN_DIM                                                   !1
         30        OP_DATA                                                      4
   31    31        ECHO                                                         '%0AWhen+next+index%3D2+and+max+key%3D0%2C+next+key+is+0+or+2.'
   32    32        INIT_FCALL                                                   'var_dump'
         33        SEND_VAR                                                     !0
         34        SEND_VAR                                                     !1
         35        DO_ICALL                                                     
   35    36        ASSIGN                                                       !0, <array>
   36    37        UNSET_DIM                                                    !0, 1
         38        UNSET_DIM                                                    !0, 0
   37    39        ASSIGN                                                       !1, !0
   39    40        ASSIGN_DIM                                                   !1
         41        OP_DATA                                                      4
   40    42        ASSIGN_DIM                                                   !0
         43        OP_DATA                                                      3
   42    44        ECHO                                                         '%0AIf+reverse+variable%2C+result+is+reverse+too.%0A'
   43    45        INIT_FCALL                                                   'var_dump'
         46        SEND_VAR                                                     !0
         47        SEND_VAR                                                     !1
         48        DO_ICALL                                                     
   45    49        ASSIGN                                                       !0, <array>
   46    50        UNSET_DIM                                                    !0, 1
         51        UNSET_DIM                                                    !0, 0
   47    52        ASSIGN                                               ~25     !3, !0
         53        ASSIGN                                               ~26     !2, ~25
         54        ASSIGN                                                       !1, ~26
   49    55        ASSIGN_DIM                                                   !0
         56        OP_DATA                                                      3
   50    57        ASSIGN_DIM                                                   !1
         58        OP_DATA                                                      4
   51    59        ASSIGN_DIM                                                   !3
         60        OP_DATA                                                      6
   52    61        ASSIGN_DIM                                                   !2
         62        OP_DATA                                                      5
   54    63        ECHO                                                         '%0AWhen+increase+variables%2C+only+the+last+one+take+over+key..%0A'
   55    64        INIT_FCALL                                                   'var_dump'
         65        SEND_VAR                                                     !0
         66        SEND_VAR                                                     !1
         67        SEND_VAR                                                     !2
         68        SEND_VAR                                                     !3
         69        DO_ICALL                                                     
         70      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
173.59 ms | 3587 KiB | 14 Q