3v4l.org

run code in 300+ 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.0.0


preferences:
197.84 ms | 1400 KiB | 15 Q