3v4l.org

run code in 500+ PHP versions simultaneously
<?php $arrays = array("foo-1" => array(array("A", 3), array("B", 3)), "foo-2" => array(array("A", 1), array("B", 7)), "foo-3" => array(array("A", 1), array("B", 6))); $names = "("; $letters = "("; $numbers = ""; $coordinate = ""; foreach($arrays as $arrayName => $array) { if(array_search($arrayName, array_keys($arrays)) == 0) { $names .= $arrayName; }else{ $names .= ",".$arrayName; } foreach($array as $key => $nestedArray) { foreach($nestedArray as $letterOrNum => $value) { if($letterOrNum == 0) { // it's a letter if($key + 1 == 1) { $nextLetter = $array[$key + 1][0]; if (!strpos($letters, $value.','.$nextLetter) !== false) { if($key == 0 && array_search($arrayName, array_keys($arrays)) == 0) { $letters .= $value; }else{ $letters .= ",".$value; } } }else{ $previousLetter = $array[$key - 1][0]; if (!strpos($letters, $previousLetter.','.$value) !== false) { if($key == 0 && array_search($arrayName, array_keys($arrays)) == 0) { $letters .= $value; }else{ $letters .= ",".$value; } } } }else{ // its a number if($key == 0) { $coordinate .= "(".$value.","; }else{ $coordinate .= $value.")"; } $numbers .= $coordinate; $coordinate = ""; } } } } $names .= ")"; $letters .= ")"; echo $names; echo $letters; echo $numbers;
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 6, Position 2 = 101
Branch analysis from position: 6
2 jumps found. (Code = 78) Position 1 = 7, Position 2 = 101
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 17, Position 2 = 19
Branch analysis from position: 17
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
2 jumps found. (Code = 77) Position 1 = 22, Position 2 = 99
Branch analysis from position: 22
2 jumps found. (Code = 78) Position 1 = 23, Position 2 = 99
Branch analysis from position: 23
2 jumps found. (Code = 77) Position 1 = 25, Position 2 = 97
Branch analysis from position: 25
2 jumps found. (Code = 78) Position 1 = 26, Position 2 = 97
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 86
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 59
Branch analysis from position: 32
2 jumps found. (Code = 43) Position 1 = 42, Position 2 = 58
Branch analysis from position: 42
2 jumps found. (Code = 46) Position 1 = 44, Position 2 = 53
Branch analysis from position: 44
2 jumps found. (Code = 43) Position 1 = 54, Position 2 = 56
Branch analysis from position: 54
1 jumps found. (Code = 42) Position 1 = 58
Branch analysis from position: 58
1 jumps found. (Code = 42) Position 1 = 85
Branch analysis from position: 85
1 jumps found. (Code = 42) Position 1 = 96
Branch analysis from position: 96
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 85
Branch analysis from position: 85
Branch analysis from position: 53
Branch analysis from position: 58
Branch analysis from position: 59
2 jumps found. (Code = 43) Position 1 = 69, Position 2 = 85
Branch analysis from position: 69
2 jumps found. (Code = 46) Position 1 = 71, Position 2 = 80
Branch analysis from position: 71
2 jumps found. (Code = 43) Position 1 = 81, Position 2 = 83
Branch analysis from position: 81
1 jumps found. (Code = 42) Position 1 = 85
Branch analysis from position: 85
Branch analysis from position: 83
1 jumps found. (Code = 42) Position 1 = 96
Branch analysis from position: 96
Branch analysis from position: 80
Branch analysis from position: 85
Branch analysis from position: 86
2 jumps found. (Code = 43) Position 1 = 88, Position 2 = 92
Branch analysis from position: 88
1 jumps found. (Code = 42) Position 1 = 94
Branch analysis from position: 94
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 92
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 97
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
Branch analysis from position: 97
Branch analysis from position: 99
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 99
Branch analysis from position: 19
2 jumps found. (Code = 77) Position 1 = 22, Position 2 = 99
Branch analysis from position: 22
Branch analysis from position: 99
Branch analysis from position: 101
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 101
filename:       /in/mMoT6
function name:  (null)
number of ops:  108
compiled vars:  !0 = $arrays, !1 = $names, !2 = $letters, !3 = $numbers, !4 = $coordinate, !5 = $array, !6 = $arrayName, !7 = $nestedArray, !8 = $key, !9 = $value, !10 = $letterOrNum, !11 = $nextLetter, !12 = $previousLetter
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, <array>
    5     1        ASSIGN                                                       !1, '%28'
    6     2        ASSIGN                                                       !2, '%28'
    7     3        ASSIGN                                                       !3, ''
    8     4        ASSIGN                                                       !4, ''
   10     5      > FE_RESET_R                                           $18     !0, ->101
          6    > > FE_FETCH_R                                           ~19     $18, !5, ->101
          7    >   ASSIGN                                                       !6, ~19
   11     8        INIT_FCALL                                                   'array_search'
          9        SEND_VAR                                                     !6
         10        INIT_FCALL                                                   'array_keys'
         11        SEND_VAR                                                     !0
         12        DO_ICALL                                             $21     
         13        SEND_VAR                                                     $21
         14        DO_ICALL                                             $22     
         15        IS_EQUAL                                                     $22, 0
         16      > JMPZ                                                         ~23, ->19
   12    17    >   ASSIGN_OP                                         8          !1, !6
   11    18      > JMP                                                          ->21
   14    19    >   CONCAT                                               ~25     '%2C', !6
         20        ASSIGN_OP                                         8          !1, ~25
   16    21    > > FE_RESET_R                                           $27     !5, ->99
         22    > > FE_FETCH_R                                           ~28     $27, !7, ->99
         23    >   ASSIGN                                                       !8, ~28
   17    24      > FE_RESET_R                                           $30     !7, ->97
         25    > > FE_FETCH_R                                           ~31     $30, !9, ->97
         26    >   ASSIGN                                                       !10, ~31
   18    27        IS_EQUAL                                                     !10, 0
         28      > JMPZ                                                         ~33, ->86
   19    29    >   ADD                                                  ~34     !8, 1
         30        IS_EQUAL                                                     ~34, 1
         31      > JMPZ                                                         ~35, ->59
   20    32    >   ADD                                                  ~36     !8, 1
         33        FETCH_DIM_R                                          ~37     !5, ~36
         34        FETCH_DIM_R                                          ~38     ~37, 0
         35        ASSIGN                                                       !11, ~38
   21    36        CONCAT                                               ~40     !9, '%2C'
         37        CONCAT                                               ~41     ~40, !11
         38        FRAMELESS_ICALL_2                strpos              ~42     !2, ~41
         39        BOOL_NOT                                             ~43     ~42
         40        TYPE_CHECK                                      1018          ~43
         41      > JMPZ                                                         ~44, ->58
   22    42    >   IS_EQUAL                                             ~45     !8, 0
         43      > JMPZ_EX                                              ~45     ~45, ->53
         44    >   INIT_FCALL                                                   'array_search'
         45        SEND_VAR                                                     !6
         46        INIT_FCALL                                                   'array_keys'
         47        SEND_VAR                                                     !0
         48        DO_ICALL                                             $46     
         49        SEND_VAR                                                     $46
         50        DO_ICALL                                             $47     
         51        IS_EQUAL                                             ~48     $47, 0
         52        BOOL                                                 ~45     ~48
         53    > > JMPZ                                                         ~45, ->56
   23    54    >   ASSIGN_OP                                         8          !2, !9
   22    55      > JMP                                                          ->58
   25    56    >   CONCAT                                               ~50     '%2C', !9
         57        ASSIGN_OP                                         8          !2, ~50
   19    58    > > JMP                                                          ->85
   29    59    >   SUB                                                  ~52     !8, 1
         60        FETCH_DIM_R                                          ~53     !5, ~52
         61        FETCH_DIM_R                                          ~54     ~53, 0
         62        ASSIGN                                                       !12, ~54
   30    63        CONCAT                                               ~56     !12, '%2C'
         64        CONCAT                                               ~57     ~56, !9
         65        FRAMELESS_ICALL_2                strpos              ~58     !2, ~57
         66        BOOL_NOT                                             ~59     ~58
         67        TYPE_CHECK                                      1018          ~59
         68      > JMPZ                                                         ~60, ->85
   31    69    >   IS_EQUAL                                             ~61     !8, 0
         70      > JMPZ_EX                                              ~61     ~61, ->80
         71    >   INIT_FCALL                                                   'array_search'
         72        SEND_VAR                                                     !6
         73        INIT_FCALL                                                   'array_keys'
         74        SEND_VAR                                                     !0
         75        DO_ICALL                                             $62     
         76        SEND_VAR                                                     $62
         77        DO_ICALL                                             $63     
         78        IS_EQUAL                                             ~64     $63, 0
         79        BOOL                                                 ~61     ~64
         80    > > JMPZ                                                         ~61, ->83
   32    81    >   ASSIGN_OP                                         8          !2, !9
   31    82      > JMP                                                          ->85
   34    83    >   CONCAT                                               ~66     '%2C', !9
         84        ASSIGN_OP                                         8          !2, ~66
   18    85    > > JMP                                                          ->96
   39    86    >   IS_EQUAL                                                     !8, 0
         87      > JMPZ                                                         ~68, ->92
   40    88    >   CONCAT                                               ~69     '%28', !9
         89        CONCAT                                               ~70     ~69, '%2C'
         90        ASSIGN_OP                                         8          !4, ~70
   39    91      > JMP                                                          ->94
   42    92    >   CONCAT                                               ~72     !9, '%29'
         93        ASSIGN_OP                                         8          !4, ~72
   44    94    >   ASSIGN_OP                                         8          !3, !4
   45    95        ASSIGN                                                       !4, ''
   17    96    > > JMP                                                          ->25
         97    >   FE_FREE                                                      $30
   16    98      > JMP                                                          ->22
         99    >   FE_FREE                                                      $27
   10   100      > JMP                                                          ->6
        101    >   FE_FREE                                                      $18
   51   102        ASSIGN_OP                                         8          !1, '%29'
   52   103        ASSIGN_OP                                         8          !2, '%29'
   54   104        ECHO                                                         !1
   55   105        ECHO                                                         !2
   56   106        ECHO                                                         !3
   57   107      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
174.19 ms | 2115 KiB | 15 Q