3v4l.org

run code in 300+ PHP versions simultaneously
<?php $map = ' \\ / / / / / \\ \\ \\ / \\ /\\ \\/ \\ / \\ \\ \\ \\ \\ \\ / /'; echo( r($map)['s']); function r($m){ $z=strpos($m,"/\\"); $z-=strrpos(substr($m,0,$z),"\n"); $ls=explode("\n",$m);$i=0; foreach($ls as $l){ $y=$i<count($ls)/2?0:1; foreach([0,1] as $x){ $s = substr($l,$x?($z-1):0,$x?$z*$z:$z); $a[$y+$x+($y?2:1)][] = strpos($s,"/")?"/":(strpos($s,"\\")?"\\":""); } $i++; } $n=1; foreach($a as $k=>$p){ $t=$p[$k<3?count($p)-1:0]; $s=0;$x=0;$b[$k]['s']=''; for($j=count($p)-1;$j>=0;$j--){ if($p[$j]){ $b[$k]['s'] .= strpad("",$j," ").($p[$j] === $t ? '/' : '_')."\n"; $s+=$p[$j]==$t?1:0; $x++; } } $b[$k]['t']=$s/$x; $n=$b[$k]['t']<$b[$n]['t']?$k:$n; } return $b[$n]; }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/HbW3W
function name:  (null)
number of ops:  7
compiled vars:  !0 = $map
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, '++++++++++++++++++%5C%0A++++++%2F++++++++++%2F%0A+++++++%2F++++++++%2F%0A++++++++%2F++++++%5C%0A+++++++++%5C++++%5C%0A++++++++++%2F++%5C%0A+++++++++++%2F%5C%0A+++++++++++%5C%2F%0A++++++++++%5C++%2F%0A+++++++++%5C++++%5C%0A++++++++%5C++++++%5C%0A+++++++%5C++++++++%5C%0A++++++%2F++++++++++%2F'
   15     1        INIT_FCALL_BY_NAME                                       'r'
          2        SEND_VAR_EX                                              !0
          3        DO_FCALL                                      0  $2      
          4        FETCH_DIM_R                                      ~3      $2, 's'
          5        ECHO                                                     ~3
   44     6      > RETURN                                                   1

Function r:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 23, Position 2 = 79
Branch analysis from position: 23
2 jumps found. (Code = 78) Position 1 = 24, Position 2 = 79
Branch analysis from position: 24
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 30
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 31
Branch analysis from position: 31
2 jumps found. (Code = 77) Position 1 = 33, Position 2 = 76
Branch analysis from position: 33
2 jumps found. (Code = 78) Position 1 = 34, Position 2 = 76
Branch analysis from position: 34
2 jumps found. (Code = 43) Position 1 = 37, Position 2 = 40
Branch analysis from position: 37
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
2 jumps found. (Code = 43) Position 1 = 43, Position 2 = 46
Branch analysis from position: 43
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
2 jumps found. (Code = 43) Position 1 = 52, Position 2 = 54
Branch analysis from position: 52
1 jumps found. (Code = 42) Position 1 = 55
Branch analysis from position: 55
2 jumps found. (Code = 43) Position 1 = 61, Position 2 = 63
Branch analysis from position: 61
1 jumps found. (Code = 42) Position 1 = 72
Branch analysis from position: 72
1 jumps found. (Code = 42) Position 1 = 33
Branch analysis from position: 33
Branch analysis from position: 63
2 jumps found. (Code = 43) Position 1 = 68, Position 2 = 70
Branch analysis from position: 68
1 jumps found. (Code = 42) Position 1 = 71
Branch analysis from position: 71
1 jumps found. (Code = 42) Position 1 = 33
Branch analysis from position: 33
Branch analysis from position: 70
1 jumps found. (Code = 42) Position 1 = 33
Branch analysis from position: 33
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 61, Position 2 = 63
Branch analysis from position: 61
Branch analysis from position: 63
Branch analysis from position: 46
2 jumps found. (Code = 43) Position 1 = 52, Position 2 = 54
Branch analysis from position: 52
Branch analysis from position: 54
Branch analysis from position: 40
2 jumps found. (Code = 43) Position 1 = 43, Position 2 = 46
Branch analysis from position: 43
Branch analysis from position: 46
Branch analysis from position: 76
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
Branch analysis from position: 76
Branch analysis from position: 30
2 jumps found. (Code = 77) Position 1 = 33, Position 2 = 76
Branch analysis from position: 33
Branch analysis from position: 76
Branch analysis from position: 79
2 jumps found. (Code = 77) Position 1 = 82, Position 2 = 146
Branch analysis from position: 82
2 jumps found. (Code = 78) Position 1 = 83, Position 2 = 146
Branch analysis from position: 83
2 jumps found. (Code = 43) Position 1 = 86, Position 2 = 90
Branch analysis from position: 86
1 jumps found. (Code = 42) Position 1 = 91
Branch analysis from position: 91
1 jumps found. (Code = 42) Position 1 = 129
Branch analysis from position: 129
2 jumps found. (Code = 44) Position 1 = 131, Position 2 = 102
Branch analysis from position: 131
2 jumps found. (Code = 43) Position 1 = 141, Position 2 = 143
Branch analysis from position: 141
1 jumps found. (Code = 42) Position 1 = 144
Branch analysis from position: 144
1 jumps found. (Code = 42) Position 1 = 82
Branch analysis from position: 82
Branch analysis from position: 143
1 jumps found. (Code = 42) Position 1 = 82
Branch analysis from position: 82
Branch analysis from position: 102
2 jumps found. (Code = 43) Position 1 = 104, Position 2 = 128
Branch analysis from position: 104
2 jumps found. (Code = 43) Position 1 = 112, Position 2 = 114
Branch analysis from position: 112
1 jumps found. (Code = 42) Position 1 = 115
Branch analysis from position: 115
2 jumps found. (Code = 43) Position 1 = 123, Position 2 = 125
Branch analysis from position: 123
1 jumps found. (Code = 42) Position 1 = 126
Branch analysis from position: 126
2 jumps found. (Code = 44) Position 1 = 131, Position 2 = 102
Branch analysis from position: 131
Branch analysis from position: 102
Branch analysis from position: 125
2 jumps found. (Code = 44) Position 1 = 131, Position 2 = 102
Branch analysis from position: 131
Branch analysis from position: 102
Branch analysis from position: 114
2 jumps found. (Code = 43) Position 1 = 123, Position 2 = 125
Branch analysis from position: 123
Branch analysis from position: 125
Branch analysis from position: 128
Branch analysis from position: 90
1 jumps found. (Code = 42) Position 1 = 129
Branch analysis from position: 129
Branch analysis from position: 146
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 146
Branch analysis from position: 79
filename:       /in/HbW3W
function name:  r
number of ops:  150
compiled vars:  !0 = $m, !1 = $z, !2 = $ls, !3 = $i, !4 = $l, !5 = $y, !6 = $x, !7 = $s, !8 = $a, !9 = $n, !10 = $p, !11 = $k, !12 = $t, !13 = $b, !14 = $j
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   17     0  E >   RECV                                             !0      
   18     1        INIT_FCALL                                               'strpos'
          2        SEND_VAR                                                 !0
          3        SEND_VAL                                                 '%2F%5C'
          4        DO_ICALL                                         $15     
          5        ASSIGN                                                   !1, $15
   19     6        INIT_FCALL                                               'strrpos'
          7        INIT_FCALL                                               'substr'
          8        SEND_VAR                                                 !0
          9        SEND_VAL                                                 0
         10        SEND_VAR                                                 !1
         11        DO_ICALL                                         $17     
         12        SEND_VAR                                                 $17
         13        SEND_VAL                                                 '%0A'
         14        DO_ICALL                                         $18     
         15        ASSIGN_OP                                     2          !1, $18
   20    16        INIT_FCALL                                               'explode'
         17        SEND_VAL                                                 '%0A'
         18        SEND_VAR                                                 !0
         19        DO_ICALL                                         $20     
         20        ASSIGN                                                   !2, $20
         21        ASSIGN                                                   !3, 0
   21    22      > FE_RESET_R                                       $23     !2, ->79
         23    > > FE_FETCH_R                                               $23, !4, ->79
   22    24    >   COUNT                                            ~24     !2
         25        DIV                                              ~25     ~24, 2
         26        IS_SMALLER                                               !3, ~25
         27      > JMPZ                                                     ~26, ->30
         28    >   QM_ASSIGN                                        ~27     0
         29      > JMP                                                      ->31
         30    >   QM_ASSIGN                                        ~27     1
         31    >   ASSIGN                                                   !5, ~27
   23    32      > FE_RESET_R                                       $29     <array>, ->76
         33    > > FE_FETCH_R                                               $29, !6, ->76
   24    34    >   INIT_FCALL                                               'substr'
         35        SEND_VAR                                                 !4
         36      > JMPZ                                                     !6, ->40
         37    >   SUB                                              ~30     !1, 1
         38        QM_ASSIGN                                        ~31     ~30
         39      > JMP                                                      ->41
         40    >   QM_ASSIGN                                        ~31     0
         41    >   SEND_VAL                                                 ~31
         42      > JMPZ                                                     !6, ->46
         43    >   MUL                                              ~32     !1, !1
         44        QM_ASSIGN                                        ~33     ~32
         45      > JMP                                                      ->47
         46    >   QM_ASSIGN                                        ~33     !1
         47    >   SEND_VAL                                                 ~33
         48        DO_ICALL                                         $34     
         49        ASSIGN                                                   !7, $34
   25    50        ADD                                              ~36     !5, !6
         51      > JMPZ                                                     !5, ->54
         52    >   QM_ASSIGN                                        ~37     2
         53      > JMP                                                      ->55
         54    >   QM_ASSIGN                                        ~37     1
         55    >   ADD                                              ~38     ~36, ~37
         56        INIT_FCALL                                               'strpos'
         57        SEND_VAR                                                 !7
         58        SEND_VAL                                                 '%2F'
         59        DO_ICALL                                         $41     
         60      > JMPZ                                                     $41, ->63
         61    >   QM_ASSIGN                                        ~42     '%2F'
         62      > JMP                                                      ->72
         63    >   INIT_FCALL                                               'strpos'
         64        SEND_VAR                                                 !7
         65        SEND_VAL                                                 '%5C'
         66        DO_ICALL                                         $43     
         67      > JMPZ                                                     $43, ->70
         68    >   QM_ASSIGN                                        ~44     '%5C'
         69      > JMP                                                      ->71
         70    >   QM_ASSIGN                                        ~44     ''
         71    >   QM_ASSIGN                                        ~42     ~44
         72    >   FETCH_DIM_W                                      $39     !8, ~38
         73        ASSIGN_DIM                                               $39
         74        OP_DATA                                                  ~42
   23    75      > JMP                                                      ->33
         76    >   FE_FREE                                                  $29
   27    77        PRE_INC                                                  !3
   21    78      > JMP                                                      ->23
         79    >   FE_FREE                                                  $23
   29    80        ASSIGN                                                   !9, 1
   30    81      > FE_RESET_R                                       $47     !8, ->146
         82    > > FE_FETCH_R                                       ~48     $47, !10, ->146
         83    >   ASSIGN                                                   !11, ~48
   31    84        IS_SMALLER                                               !11, 3
         85      > JMPZ                                                     ~50, ->90
         86    >   COUNT                                            ~51     !10
         87        SUB                                              ~52     ~51, 1
         88        QM_ASSIGN                                        ~53     ~52
         89      > JMP                                                      ->91
         90    >   QM_ASSIGN                                        ~53     0
         91    >   FETCH_DIM_R                                      ~54     !10, ~53
         92        ASSIGN                                                   !12, ~54
   32    93        ASSIGN                                                   !7, 0
         94        ASSIGN                                                   !6, 0
         95        FETCH_DIM_W                                      $58     !13, !11
         96        ASSIGN_DIM                                               $58, 's'
         97        OP_DATA                                                  ''
   33    98        COUNT                                            ~60     !10
         99        SUB                                              ~61     ~60, 1
        100        ASSIGN                                                   !14, ~61
        101      > JMP                                                      ->129
   34   102    >   FETCH_DIM_R                                      ~63     !10, !14
        103      > JMPZ                                                     ~63, ->128
   35   104    >   INIT_FCALL_BY_NAME                                       'strpad'
        105        SEND_VAL_EX                                              ''
        106        SEND_VAR_EX                                              !14
        107        SEND_VAL_EX                                              '+'
        108        DO_FCALL                                      0  $66     
        109        FETCH_DIM_R                                      ~67     !10, !14
        110        IS_IDENTICAL                                             !12, ~67
        111      > JMPZ                                                     ~68, ->114
        112    >   QM_ASSIGN                                        ~69     '%2F'
        113      > JMP                                                      ->115
        114    >   QM_ASSIGN                                        ~69     '_'
        115    >   CONCAT                                           ~70     $66, ~69
        116        CONCAT                                           ~71     ~70, '%0A'
        117        FETCH_DIM_RW                                     $64     !13, !11
        118        ASSIGN_DIM_OP                .=               8          $64, 's'
        119        OP_DATA                                                  ~71
   36   120        FETCH_DIM_R                                      ~72     !10, !14
        121        IS_EQUAL                                                 !12, ~72
        122      > JMPZ                                                     ~73, ->125
        123    >   QM_ASSIGN                                        ~74     1
        124      > JMP                                                      ->126
        125    >   QM_ASSIGN                                        ~74     0
        126    >   ASSIGN_OP                                     1          !7, ~74
   37   127        PRE_INC                                                  !6
   33   128    >   PRE_DEC                                                  !14
        129    >   IS_SMALLER_OR_EQUAL                                      0, !14
        130      > JMPNZ                                                    ~78, ->102
   40   131    >   DIV                                              ~81     !7, !6
        132        FETCH_DIM_W                                      $79     !13, !11
        133        ASSIGN_DIM                                               $79, 't'
        134        OP_DATA                                                  ~81
   41   135        FETCH_DIM_R                                      ~82     !13, !11
        136        FETCH_DIM_R                                      ~83     ~82, 't'
        137        FETCH_DIM_R                                      ~84     !13, !9
        138        FETCH_DIM_R                                      ~85     ~84, 't'
        139        IS_SMALLER                                               ~83, ~85
        140      > JMPZ                                                     ~86, ->143
        141    >   QM_ASSIGN                                        ~87     !11
        142      > JMP                                                      ->144
        143    >   QM_ASSIGN                                        ~87     !9
        144    >   ASSIGN                                                   !9, ~87
   30   145      > JMP                                                      ->82
        146    >   FE_FREE                                                  $47
   43   147        FETCH_DIM_R                                      ~89     !13, !9
        148      > RETURN                                                   ~89
   44   149*     > RETURN                                                   null

End of function r

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
270.37 ms | 1412 KiB | 22 Q