3v4l.org

run code in 300+ PHP versions simultaneously
<?php function makePalindrome($word) { $result = 0; $chars = str_split($word); $halfWord = round(count($chars)/2, 0, PHP_ROUND_HALF_DOWN); var_dump($halfWord);exit; for($index = 0; $index >= $halfWord; $index++) { if($word != strrev($word)) { $mirrorCharPos = count($chars) - $index - 1; $mirrorChar = $chars[$mirrorCharPos]; if(isset($mirrorChar)) { $result += ord($mirrorChar) - ord($char); $chars[$mirrorCharPos] = $char; } $word = join('', $chars); }else{ break; } } return $result; } $wordToTest1 = 'aaa'; echo 'test1: ' . makePalindrome($wordToTest1) . PHP_EOL; $wordToTest2 = 'abc'; echo 'test2: ' . makePalindrome($wordToTest2) . PHP_EOL; $wordToTest3 = 'abcde'; echo 'test3: ' . makePalindrome($wordToTest3) . PHP_EOL;
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/gBkFq
function name:  (null)
number of ops:  22
compiled vars:  !0 = $wordToTest1, !1 = $wordToTest2, !2 = $wordToTest3
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   38     0  E >   ASSIGN                                                   !0, 'aaa'
   39     1        INIT_FCALL                                               'makepalindrome'
          2        SEND_VAR                                                 !0
          3        DO_FCALL                                      0  $4      
          4        CONCAT                                           ~5      'test1%3A+', $4
          5        CONCAT                                           ~6      ~5, '%0A'
          6        ECHO                                                     ~6
   40     7        ASSIGN                                                   !1, 'abc'
   41     8        INIT_FCALL                                               'makepalindrome'
          9        SEND_VAR                                                 !1
         10        DO_FCALL                                      0  $8      
         11        CONCAT                                           ~9      'test2%3A+', $8
         12        CONCAT                                           ~10     ~9, '%0A'
         13        ECHO                                                     ~10
   42    14        ASSIGN                                                   !2, 'abcde'
   43    15        INIT_FCALL                                               'makepalindrome'
         16        SEND_VAR                                                 !2
         17        DO_FCALL                                      0  $12     
         18        CONCAT                                           ~13     'test3%3A+', $12
         19        CONCAT                                           ~14     ~13, '%0A'
         20        ECHO                                                     ~14
         21      > RETURN                                                   1

Function makepalindrome:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 79) Position 1 = -2
filename:       /in/gBkFq
function name:  makePalindrome
number of ops:  55
compiled vars:  !0 = $word, !1 = $result, !2 = $chars, !3 = $halfWord, !4 = $index, !5 = $mirrorCharPos, !6 = $mirrorChar, !7 = $char
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    5     1        ASSIGN                                                   !1, 0
    7     2        INIT_FCALL                                               'str_split'
          3        SEND_VAR                                                 !0
          4        DO_ICALL                                         $9      
          5        ASSIGN                                                   !2, $9
    9     6        INIT_FCALL                                               'round'
          7        COUNT                                            ~11     !2
          8        DIV                                              ~12     ~11, 2
          9        SEND_VAL                                                 ~12
         10        SEND_VAL                                                 0
         11        SEND_VAL                                                 2
         12        DO_ICALL                                         $13     
         13        ASSIGN                                                   !3, $13
   11    14        INIT_FCALL                                               'var_dump'
         15        SEND_VAR                                                 !3
         16        DO_ICALL                                                 
         17      > EXIT                                                     
   13    18*       ASSIGN                                                   !4, 0
         19*       JMP                                                      ->51
   15    20*       INIT_FCALL                                               'strrev'
         21*       SEND_VAR                                                 !0
         22*       DO_ICALL                                         $17     
         23*       IS_NOT_EQUAL                                             !0, $17
         24*       JMPZ                                                     ~18, ->49
   17    25*       COUNT                                            ~19     !2
         26*       SUB                                              ~20     ~19, !4
         27*       SUB                                              ~21     ~20, 1
         28*       ASSIGN                                                   !5, ~21
   19    29*       FETCH_DIM_R                                      ~23     !2, !5
         30*       ASSIGN                                                   !6, ~23
   21    31*       ISSET_ISEMPTY_CV                                         !6
         32*       JMPZ                                                     ~25, ->43
   23    33*       INIT_FCALL                                               'ord'
         34*       SEND_VAR                                                 !6
         35*       DO_ICALL                                         $26     
         36*       INIT_FCALL                                               'ord'
         37*       SEND_VAR                                                 !7
         38*       DO_ICALL                                         $27     
         39*       SUB                                              ~28     $26, $27
         40*       ASSIGN_OP                                     1          !1, ~28
   25    41*       ASSIGN_DIM                                               !2, !5
         42*       OP_DATA                                                  !7
   28    43*       INIT_FCALL                                               'join'
         44*       SEND_VAL                                                 ''
         45*       SEND_VAR                                                 !2
         46*       DO_ICALL                                         $31     
         47*       ASSIGN                                                   !0, $31
         48*       JMP                                                      ->50
   31    49*       JMP                                                      ->53
   13    50*       PRE_INC                                                  !4
         51*       IS_SMALLER_OR_EQUAL                                      !3, !4
         52*       JMPNZ                                                    ~34, ->20
   35    53*       RETURN                                                   !1
   36    54*     > RETURN                                                   null

End of function makepalindrome

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
149.97 ms | 1403 KiB | 28 Q