3v4l.org

run code in 500+ PHP versions simultaneously
<?php $tests = [ '' => [], 'one' => ['one'], 'one and two' => ['one', 'two'], 'one, two and three' => ['one', 'two', 'three'], 'one, two, three and four' => ['one', 'two', 'three', 'four'], 'one, two, three, four and five' => ['one', 'two', 'three', 'four', 'five'], ]; function mickmackusa1(array $words, string $separator = ', ', string $conjunction = ' and '): string { return implode($separator, $words + ['last' => implode($conjunction, array_splice($words, -2))]); } function mickmackusa2(array $words, string $separator = ', ', string $conjunction = ' and ') { return implode($conjunction, [...(array) (implode($separator, array_splice($words, 0, -1)) ?: []), ...$words]); } function angryDan(array $words, $separator = ', ', $conjunction = ' and '): mixed { $last = array_pop($words); if ($words) { return implode($separator, $words) . $conjunction . $last; } return $last; } function deceze(array $words, string $separator = ', ', string $conjunction = ' and '): string { return join($conjunction, array_filter(array_merge(array(join(', ', array_slice($words, 0, -1))), array_slice($words, -1)), 'strlen')); } function jercSi(array $words, string $separator = ', ', string $conjunction = ' and '): string { $lastItem = array_pop($words); // c $text = implode($separator, $words); // a, b $text .= $conjunction . $lastItem; return $text; } function enrique(array $words, string $separator = ', ', string $conjunction = ' and '): mixed { $str = array_pop($words); if ($words) $str = implode($separator, $words) . $conjunction . $str; return $str; } function jJWright(array $words, string $separator = ', ', string $conjunction = ' and '): string { $last = array_pop($words); $remaining = count($words); return ($remaining ? implode(', ',$words) . $conjunction : '') . $last; } function sevavietl(array $words, string $separator = ', ', string $conjunction = ' and '): string { return implode( array_map( function ($item, $glue) { return $item . $glue; }, $words, array_slice(array_fill(0, count($words), $separator) + ['last' => $conjunction], 2) ) ); } function vision(array $words, string $separator = ', ', string $conjunction = ' and '): string { $words[] = implode($conjunction, array_splice($words, -2)); return implode($separator, $words); } function uruapanmexicansong(array $words, string $separator = ', ', string $conjunction = ' and '): string { $str = implode($separator, $words); if (count($words) == 2) { return str_replace($separator, $conjunction, $str); } return preg_replace("/[{$separator}](?!.*[{$separator}])/", $conjunction, $str); } function planetX(array $words, string $separator = ', ', string $conjunction = 'and '): string { ob_start(); foreach ($words as $key => $value) { if (count($words) - 1 == $key) echo $conjunction . $value; elseif (count($words) - 2 == $key) echo $value . " "; else echo $value . $separator; } return ob_get_clean(); } function alexRussell(array $words, string $separator = ', ', string $conjunction = 'and '): string { ob_start(); foreach ($words as $k => $model) { echo $model; if (!preg_match("/s|S$/", $model)) echo 's'; if (isset($words[$k + 1])) { echo $separator; if (!isset($words[$k + 2])) echo $conjunction; } } return ob_get_clean(); } function astha(array $words, string $separator = ', ', string $conjunction = ' and ') { $str = ""; $lenArr = sizeof($words); for($i = 0; $i < $lenArr; $i++) { if ($i == 0) $str .= $words[$i]; elseif ($i == ($lenArr-1)) $str .= $conjunction . $words[$i]; else $str .= $separator . $words[$i]; } return $str; } function zkent(array $words, string $separator = ', ', string $conjunction = 'and '): mixed { if (count($words) == 1) { return array_pop($words); } elseif (count($words) == 2) { return implode(" $conjunction", $words); } else { $last = array_pop($words); $list = implode($separator, $words); $list .= $separator . $conjunction . $last; return $list; } } function podolinek(array $words, string $separator = ', ', string $conjunction = ' and ') { if (count($words) === 0) { return ""; } elseif (count($words) === 1) { return $words[0]; } $firstItems = implode($separator, array_slice($words, 0, -1)); $lastItem = array_slice($words, -1)[0]; return $firstItems . $conjunction . $lastItem; } function greenButterfly(array $words, string $separator = ', ', string $conjunction = ' and '): string { return implode($separator, array_slice($words, 0, -1)) . $conjunction . array_slice($words, -1)[0]; } function josh(array $words, string $separator = ',', string $conjunction = ' and '): string { if (count($words) > 1) { return sprintf( '%s%s %s %s', implode($separator, array_slice($words, 0, -1)), count($words) > 2 ? $separator : '', $conjunction ?: '', array_pop($words) ); } return implode('', $words); } function jackB(array $words, string $separator = ', ', string $conjunction = 'and '): string { $words[count($words) - 1] = $conjunction . $words[count($words) - 1]; return implode($separator, $words); } function blazejKlisz(array $words, string $separator = ', ', string $conjunction = ' and '): string { return implode($conjunction, array_filter(array_reverse(array_merge(array(array_pop($words)), array(implode($separator, $words)))))); } function raviMisra(array $words, string $separator = ', ', string $conjunction = ' and '): string { if (empty($words)) { return ''; } $glued = implode($separator, $words); $pos = strrpos($glued, $separator); if ($pos !== false) { $glued = substr_replace($glued, $conjunction, $pos, strlen($separator)); } return $glued; } printf("| %20s| 0️⃣ | 1️⃣ | 2️⃣ | 3️⃣ | 4️⃣ | 5️⃣ |\n", 'user \ elements'); $funcs = [ 'mickmackusa1', 'mickmackusa2', 'deceze', 'jJWright', 'sevavietl', 'vision', 'astha', 'podolinek', 'blazejKlisz', 'raviMisra', 'angryDan', 'enrique', 'planetX', 'jercSi', 'zkent', 'uruapanmexicansong', 'josh', 'josh', 'alexRussell', 'greenButterfly', 'jackB' ]; foreach ($funcs as $func) { echo "--------------------------------------------------------------------\n"; printf( "| %20s| %s | %s | %s | %s | %s | %s |\n", $func, ...array_map( fn($result, $expected) => $result === $expected ? '✅': '💩', array_map($func, $tests), array_keys($tests) ) ); }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 7, Position 2 = 29
Branch analysis from position: 7
2 jumps found. (Code = 78) Position 1 = 8, Position 2 = 29
Branch analysis from position: 8
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
Branch analysis from position: 29
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 29
filename:       /in/jaq5q
function name:  (null)
number of ops:  31
compiled vars:  !0 = $tests, !1 = $funcs, !2 = $func
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, <array>
  180     1        INIT_FCALL                                                   'printf'
          2        SEND_VAL                                                     '%7C+%2520s%7C++0%EF%B8%8F%E2%83%A3++%7C++1%EF%B8%8F%E2%83%A3++%7C++2%EF%B8%8F%E2%83%A3++%7C++3%EF%B8%8F%E2%83%A3++%7C++4%EF%B8%8F%E2%83%A3++%7C++5%EF%B8%8F%E2%83%A3++%7C%0A'
          3        SEND_VAL                                                     'user+%5C+elements'
          4        DO_ICALL                                                     
  181     5        ASSIGN                                                       !1, <array>
  204     6      > FE_RESET_R                                           $6      !1, ->29
          7    > > FE_FETCH_R                                                   $6, !2, ->29
  205     8    >   ECHO                                                         '--------------------------------------------------------------------%0A'
  206     9        INIT_FCALL                                                   'printf'
  207    10        SEND_VAL                                                     '%7C+%2520s%7C++%25s++%7C++%25s++%7C++%25s++%7C++%25s++%7C++%25s++%7C++%25s++%7C%0A'
  208    11        SEND_VAR                                                     !2
  209    12        INIT_FCALL                                                   'array_map'
  210    13        DECLARE_LAMBDA_FUNCTION                              ~7      [0]
         14        SEND_VAL                                                     ~7
  211    15        INIT_FCALL                                                   'array_map'
         16        SEND_VAR                                                     !2
         17        SEND_VAR                                                     !0
         18        DO_ICALL                                             $8      
         19        SEND_VAR                                                     $8
  212    20        INIT_FCALL                                                   'array_keys'
         21        SEND_VAR                                                     !0
         22        DO_ICALL                                             $9      
         23        SEND_VAR                                                     $9
  209    24        DO_ICALL                                             $10     
  212    25        SEND_UNPACK                                                  $10
         26        CHECK_UNDEF_ARGS                                             
  206    27        DO_ICALL                                                     
  204    28      > JMP                                                          ->7
         29    >   FE_FREE                                                      $6
  215    30      > RETURN                                                       1


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 6
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  {closure:/in/jaq5q:210}
number of ops:  9
compiled vars:  !0 = $result, !1 = $expected
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
  210     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
          2        IS_IDENTICAL                                                 !0, !1
          3      > JMPZ                                                         ~2, ->6
          4    >   QM_ASSIGN                                            ~3      '%E2%9C%85'
          5      > JMP                                                          ->7
          6    >   QM_ASSIGN                                            ~3      '%F0%9F%92%A9'
          7    > > RETURN                                                       ~3
          8*     > RETURN                                                       null

End of Dynamic Function 0

Function mickmackusa1:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  mickmackusa1
number of ops:  15
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   12     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   13     3        INIT_FCALL                                                   'array_splice'
          4        SEND_REF                                                     !0
          5        SEND_VAL                                                     -2
          6        DO_ICALL                                             $3      
          7        FRAMELESS_ICALL_2                implode             ~4      !2, $3
          8        INIT_ARRAY                                           ~5      ~4, 'last'
          9        ADD                                                  ~6      !0, ~5
         10        FRAMELESS_ICALL_2                implode             ~7      !1, ~6
         11        VERIFY_RETURN_TYPE                                           ~7
         12      > RETURN                                                       ~7
   14    13*       VERIFY_RETURN_TYPE                                           
         14*     > RETURN                                                       null

End of function mickmackusa1

Function mickmackusa2:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  mickmackusa2
number of ops:  18
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   16     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   17     3        INIT_FCALL                                                   'array_splice'
          4        SEND_REF                                                     !0
          5        SEND_VAL                                                     0
          6        SEND_VAL                                                     -1
          7        DO_ICALL                                             $3      
          8        FRAMELESS_ICALL_2                implode             ~4      !1, $3
          9        JMP_SET                                              ~5      ~4, ->11
         10        QM_ASSIGN                                            ~5      <array>
         11        CAST                                              7  ~6      ~5
         12        INIT_ARRAY                                           ~7      
         13        ADD_ARRAY_UNPACK                                     ~7      ~6
         14        ADD_ARRAY_UNPACK                                     ~7      !0
         15        FRAMELESS_ICALL_2                implode             ~8      !2, ~7
         16      > RETURN                                                       ~8
   18    17*     > RETURN                                                       null

End of function mickmackusa2

Function angrydan:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 12
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  angryDan
number of ops:  15
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction, !3 = $last
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   21     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   22     3        INIT_FCALL                                                   'array_pop'
          4        SEND_REF                                                     !0
          5        DO_ICALL                                             $4      
          6        ASSIGN                                                       !3, $4
   23     7      > JMPZ                                                         !0, ->12
   24     8    >   FRAMELESS_ICALL_2                implode             ~6      !1, !0
          9        CONCAT                                               ~7      ~6, !2
         10        CONCAT                                               ~8      ~7, !3
         11      > RETURN                                                       ~8
   26    12    > > RETURN                                                       !3
   27    13*       VERIFY_RETURN_TYPE                                           
         14*     > RETURN                                                       null

End of function angrydan

Function deceze:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  deceze
number of ops:  33
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   29     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   30     3        INIT_FCALL                                                   'join'
          4        SEND_VAR                                                     !2
          5        INIT_FCALL                                                   'array_filter'
          6        INIT_FCALL                                                   'array_merge'
          7        INIT_FCALL                                                   'join'
          8        SEND_VAL                                                     '%2C+'
          9        INIT_FCALL                                                   'array_slice'
         10        SEND_VAR                                                     !0
         11        SEND_VAL                                                     0
         12        SEND_VAL                                                     -1
         13        DO_ICALL                                             $3      
         14        SEND_VAR                                                     $3
         15        DO_ICALL                                             $4      
         16        INIT_ARRAY                                           ~5      $4
         17        SEND_VAL                                                     ~5
         18        INIT_FCALL                                                   'array_slice'
         19        SEND_VAR                                                     !0
         20        SEND_VAL                                                     -1
         21        DO_ICALL                                             $6      
         22        SEND_VAR                                                     $6
         23        DO_ICALL                                             $7      
         24        SEND_VAR                                                     $7
         25        SEND_VAL                                                     'strlen'
         26        DO_ICALL                                             $8      
         27        SEND_VAR                                                     $8
         28        DO_ICALL                                             $9      
         29        VERIFY_RETURN_TYPE                                           $9
         30      > RETURN                                                       $9
   31    31*       VERIFY_RETURN_TYPE                                           
         32*     > RETURN                                                       null

End of function deceze

Function jercsi:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  jercSi
number of ops:  15
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction, !3 = $lastItem, !4 = $text
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   33     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   34     3        INIT_FCALL                                                   'array_pop'
          4        SEND_REF                                                     !0
          5        DO_ICALL                                             $5      
          6        ASSIGN                                                       !3, $5
   35     7        FRAMELESS_ICALL_2                implode             ~7      !1, !0
          8        ASSIGN                                                       !4, ~7
   36     9        CONCAT                                               ~9      !2, !3
         10        ASSIGN_OP                                         8          !4, ~9
   37    11        VERIFY_RETURN_TYPE                                           !4
         12      > RETURN                                                       !4
   38    13*       VERIFY_RETURN_TYPE                                           
         14*     > RETURN                                                       null

End of function jercsi

Function enrique:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 12
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
filename:       /in/jaq5q
function name:  enrique
number of ops:  15
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction, !3 = $str
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   40     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   41     3        INIT_FCALL                                                   'array_pop'
          4        SEND_REF                                                     !0
          5        DO_ICALL                                             $4      
          6        ASSIGN                                                       !3, $4
   42     7      > JMPZ                                                         !0, ->12
   43     8    >   FRAMELESS_ICALL_2                implode             ~6      !1, !0
          9        CONCAT                                               ~7      ~6, !2
         10        CONCAT                                               ~8      ~7, !3
         11        ASSIGN                                                       !3, ~8
   44    12    > > RETURN                                                       !3
   45    13*       VERIFY_RETURN_TYPE                                           
         14*     > RETURN                                                       null

End of function enrique

Function jjwright:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 10, Position 2 = 14
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 15
Branch analysis from position: 15
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 14
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  jJWright
number of ops:  20
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction, !3 = $last, !4 = $remaining
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   47     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   48     3        INIT_FCALL                                                   'array_pop'
          4        SEND_REF                                                     !0
          5        DO_ICALL                                             $5      
          6        ASSIGN                                                       !3, $5
   49     7        COUNT                                                ~7      !0
          8        ASSIGN                                                       !4, ~7
   50     9      > JMPZ                                                         !4, ->14
         10    >   FRAMELESS_ICALL_2                implode             ~9      '%2C+', !0
         11        CONCAT                                               ~10     ~9, !2
         12        QM_ASSIGN                                            ~11     ~10
         13      > JMP                                                          ->15
         14    >   QM_ASSIGN                                            ~11     ''
         15    >   CONCAT                                               ~12     ~11, !3
         16        VERIFY_RETURN_TYPE                                           ~12
         17      > RETURN                                                       ~12
   51    18*       VERIFY_RETURN_TYPE                                           
         19*     > RETURN                                                       null

End of function jjwright

Function sevavietl:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  sevavietl
number of ops:  26
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   53     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   55     3        INIT_FCALL                                                   'array_map'
   56     4        DECLARE_LAMBDA_FUNCTION                              ~3      [0]
          5        SEND_VAL                                                     ~3
   57     6        SEND_VAR                                                     !0
   58     7        INIT_FCALL                                                   'array_slice'
          8        INIT_FCALL                                                   'array_fill'
          9        SEND_VAL                                                     0
         10        COUNT                                                ~4      !0
         11        SEND_VAL                                                     ~4
         12        SEND_VAR                                                     !1
         13        DO_ICALL                                             $5      
         14        INIT_ARRAY                                           ~6      !2, 'last'
         15        ADD                                                  ~7      $5, ~6
         16        SEND_VAL                                                     ~7
         17        SEND_VAL                                                     2
         18        DO_ICALL                                             $8      
         19        SEND_VAR                                                     $8
   55    20        DO_ICALL                                             $9      
   54    21        FRAMELESS_ICALL_1                implode             ~10     $9
   58    22        VERIFY_RETURN_TYPE                                           ~10
         23      > RETURN                                                       ~10
   61    24*       VERIFY_RETURN_TYPE                                           
         25*     > RETURN                                                       null


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  {closure:sevavietl():56}
number of ops:  5
compiled vars:  !0 = $item, !1 = $glue
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   56     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
          2        CONCAT                                               ~2      !0, !1
          3      > RETURN                                                       ~2
          4*     > RETURN                                                       null

End of Dynamic Function 0

End of function sevavietl

Function vision:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  vision
number of ops:  15
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   63     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   64     3        INIT_FCALL                                                   'array_splice'
          4        SEND_REF                                                     !0
          5        SEND_VAL                                                     -2
          6        DO_ICALL                                             $4      
          7        FRAMELESS_ICALL_2                implode             ~5      !2, $4
          8        ASSIGN_DIM                                                   !0
          9        OP_DATA                                                      ~5
   65    10        FRAMELESS_ICALL_2                implode             ~6      !1, !0
         11        VERIFY_RETURN_TYPE                                           ~6
         12      > RETURN                                                       ~6
   66    13*       VERIFY_RETURN_TYPE                                           
         14*     > RETURN                                                       null

End of function vision

Function uruapanmexicansong:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 12
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jaq5q
function name:  uruapanmexicansong
number of ops:  23
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction, !3 = $str
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   68     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      '+and+'
   69     3        FRAMELESS_ICALL_2                implode             ~4      !1, !0
          4        ASSIGN                                                       !3, ~4
   70     5        COUNT                                                ~6      !0
          6        IS_EQUAL                                                     ~6, 2
          7      > JMPZ                                                         ~7, ->12
   71     8    >   FRAMELESS_ICALL_3                str_replace         ~8      !1, !2
          9        OP_DATA                                                      !3
         10        VERIFY_RETURN_TYPE                                           ~8
         11      > RETURN                                                       ~8
   73    12    >   ROPE_INIT                                         5  ~10     '%2F%5B'
         13        ROPE_ADD                                          1  ~10     ~10, !1
         14        ROPE_ADD                                          2  ~10     ~10, '%5D%28%3F%21.%2A%5B'
         15        ROPE_ADD                                          3  ~10     ~10, !1
         16        ROPE_END                                          4  ~9      ~10, '%5D%29%2F'
         17        FRAMELESS_ICALL_3                preg_replace        ~13     ~9, !2
         18        OP_DATA                                                      !3
         19        VERIFY_RETURN_TYPE                                           ~13
         20      > RETURN                                                       ~13
   74    21*       VERIFY_RETURN_TYPE                                           
         22*     > RETURN                                                       null

End of function uruapanmexicansong

Function planetx:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 6, Position 2 = 25
Branch analysis from position: 6
2 jumps found. (Code = 78) Position 1 = 7, Position 2 = 25
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 15
Branch analysis from position: 12
1 jumps found. (Code = 42) Position 1 = 24
Branch analysis from position: 24
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 15
2 jumps found. (Code = 43) Position 1 = 19, Position 2 = 22
Branch analysis from position: 19
1 jumps found. (Code = 42) Position 1 = 24
Branch analysis from position: 24
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 25
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 25
filename:       /in/jaq5q
function name:  planetX
number of ops:  32
compiled vars:  !0 = $words, !1 = $separator, !2 = $conjunction, !3 = $value, !4 = $key
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   76     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%2C+'
          2        RECV_INIT                                            !2      'and+'
   77     3        INIT_FCALL                                                   'ob_start'
          4        DO_ICALL                                                     
   78     5      > FE_RESET_R                                           $6      !0, ->25
          6    > > FE_FETCH_R                                           ~7      $6, !3, ->25
          7    >   ASSIGN                                                       !4, ~7
   79     8        COUNT                                                ~9      !0
          9        SUB                                                  ~10     ~9, 1
         10        IS_EQUAL                                                     !4, ~10
         11      > JMPZ                                                         ~11, ->15
   80    12    >   CONCAT                                               ~12     !2, !3
         13        ECHO                                                         ~12
   79    14      > JMP                                                          ->24
   81    15    >   COUNT                                                ~13     !0
         16        SUB                                                  ~14     ~13, 2
         17        IS_EQUAL                                                     !4, ~14
         18      > JMPZ                                                         ~15, ->22
   82    19    >   CONCAT                                               ~16     !3, '+'
         20        ECHO                                                         ~16
   81    21      > JMP                                                          ->24
   84    22    >   CONCAT                                               ~17     !3, !1
         23        ECHO                                                         ~17
   78    24    > > JMP                                                          ->6
         25    >   FE_FREE                                                      $6
   86    26        INIT_FCALL                                                   'ob_get_clean'
         27        DO_ICALL                                             $18     
         28        VERIFY_RETURN_TYPE                                           $18
         29      > RETURN                                                       $18
   87    30*       VERIFY_RETURN_TYPE                                           
         31*     > RETURN                                                       null

End of function planetx

Function alexrussell:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 6, Position 2 = 23
Branch analysis from position: 6
2 jumps found. (Code = 78) Position 1 = 7, Position 2 = 23
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 13
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 22
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 21, Position 2 = 22
Branch analysis from position: 21
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 22
Branch analysis from positio

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
177.35 ms | 2116 KiB | 32 Q