3v4l.org

run code in 300+ PHP versions simultaneously
<?php function calc(float $number, float $result, string $operation) { echo "$result $operation $number = "; if ($operation == "+") { $result += $number; } elseif ($operation == "-") { $result -= $number; } elseif ($operation == "*") { $result *= $number; } elseif ($operation == "/") { $result /= $number; } echo "$result\n"; return $result; } $input = "144/2*5-14.4="; $numbers = preg_split('/[+]|[-]|[=]|[*]|\\//u', $input); $operations = preg_split('/[0-9]+[.]*[0-9]*/', $input); foreach ($numbers as &$number) { $number = floatval($number); } $result = $numbers[0]; for ($i = 1; $i < count($numbers) - 1; $i++) { $result = calc($numbers[$i], $result, $operations[$i]); } echo $input.$result;
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 125) Position 1 = 12, Position 2 = 16
Branch analysis from position: 12
2 jumps found. (Code = 126) Position 1 = 13, Position 2 = 16
Branch analysis from position: 13
1 jumps found. (Code = 42) Position 1 = 12
Branch analysis from position: 12
Branch analysis from position: 16
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
2 jumps found. (Code = 44) Position 1 = 34, Position 2 = 21
Branch analysis from position: 34
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 21
2 jumps found. (Code = 44) Position 1 = 34, Position 2 = 21
Branch analysis from position: 34
Branch analysis from position: 21
Branch analysis from position: 16
filename:       /in/n6fuv
function name:  (null)
number of ops:  37
compiled vars:  !0 = $input, !1 = $numbers, !2 = $operations, !3 = $number, !4 = $result, !5 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   21     0  E >   ASSIGN                                                   !0, '144%2F2%2A5-14.4%3D'
   23     1        INIT_FCALL                                               'preg_split'
          2        SEND_VAL                                                 '%2F%5B%2B%5D%7C%5B-%5D%7C%5B%3D%5D%7C%5B%2A%5D%7C%5C%2F%2Fu'
          3        SEND_VAR                                                 !0
          4        DO_ICALL                                         $7      
          5        ASSIGN                                                   !1, $7
   24     6        INIT_FCALL                                               'preg_split'
          7        SEND_VAL                                                 '%2F%5B0-9%5D%2B%5B.%5D%2A%5B0-9%5D%2A%2F'
          8        SEND_VAR                                                 !0
          9        DO_ICALL                                         $9      
         10        ASSIGN                                                   !2, $9
   27    11      > FE_RESET_RW                                      $11     !1, ->16
         12    > > FE_FETCH_RW                                              $11, !3, ->16
   28    13    >   CAST                                          5  ~12     !3
         14        ASSIGN                                                   !3, ~12
   27    15      > JMP                                                      ->12
         16    >   FE_FREE                                                  $11
   31    17        FETCH_DIM_R                                      ~14     !1, 0
         18        ASSIGN                                                   !4, ~14
   34    19        ASSIGN                                                   !5, 1
         20      > JMP                                                      ->30
   35    21    >   INIT_FCALL                                               'calc'
         22        FETCH_DIM_R                                      ~17     !1, !5
         23        SEND_VAL                                                 ~17
         24        SEND_VAR                                                 !4
         25        FETCH_DIM_R                                      ~18     !2, !5
         26        SEND_VAL                                                 ~18
         27        DO_FCALL                                      0  $19     
         28        ASSIGN                                                   !4, $19
   34    29        PRE_INC                                                  !5
         30    >   COUNT                                            ~22     !1
         31        SUB                                              ~23     ~22, 1
         32        IS_SMALLER                                               !5, ~23
         33      > JMPNZ                                                    ~24, ->21
   38    34    >   CONCAT                                           ~25     !0, !4
         35        ECHO                                                     ~25
   39    36      > RETURN                                                   1

Function calc:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 14
Branch analysis from position: 12
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 14
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 18
Branch analysis from position: 16
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 22
Branch analysis from position: 20
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 24, Position 2 = 25
Branch analysis from position: 24
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 25
filename:       /in/n6fuv
function name:  calc
number of ops:  30
compiled vars:  !0 = $number, !1 = $result, !2 = $operation
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
    4     3        ROPE_INIT                                     6  ~4      !1
          4        ROPE_ADD                                      1  ~4      ~4, '+'
          5        ROPE_ADD                                      2  ~4      ~4, !2
          6        ROPE_ADD                                      3  ~4      ~4, '+'
          7        ROPE_ADD                                      4  ~4      ~4, !0
          8        ROPE_END                                      5  ~3      ~4, '+%3D+'
          9        ECHO                                                     ~3
    6    10        IS_EQUAL                                                 !2, '%2B'
         11      > JMPZ                                                     ~7, ->14
    7    12    >   ASSIGN_OP                                     1          !1, !0
         13      > JMP                                                      ->25
    8    14    >   IS_EQUAL                                                 !2, '-'
         15      > JMPZ                                                     ~9, ->18
    9    16    >   ASSIGN_OP                                     2          !1, !0
         17      > JMP                                                      ->25
   10    18    >   IS_EQUAL                                                 !2, '%2A'
         19      > JMPZ                                                     ~11, ->22
   11    20    >   ASSIGN_OP                                     3          !1, !0
         21      > JMP                                                      ->25
   12    22    >   IS_EQUAL                                                 !2, '%2F'
         23      > JMPZ                                                     ~13, ->25
   13    24    >   ASSIGN_OP                                     4          !1, !0
   16    25    >   NOP                                                      
         26        FAST_CONCAT                                      ~15     !1, '%0A'
         27        ECHO                                                     ~15
   18    28      > RETURN                                                   !1
   19    29*     > RETURN                                                   null

End of function calc

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
183.44 ms | 1403 KiB | 16 Q