3v4l.org

run code in 300+ PHP versions simultaneously
<?php class AreAnagrams { public static function areStringsAnagrams($a, $b) { $a_arr = str_split(strtolower($a)); $b_arr = str_split(strtolower($b)); $az = range('a', 'z'); foreach ($a_arr as $char) { if (!isset($comp_arr[$char])) { $comp_arr[$char] = 0; } if (in_array($char, $az)) { $comp_arr[$char]++; } } foreach ($b_arr as $b_char) { if (!isset($comp_arr[$b_char])) { return FALSE; } if (in_array($char, $az)) { $comp_arr[$b_char]--; } } if (array_sum($comp_arr) !== 0) { return FALSE; } return TRUE; } } echo AreAnagrams::areStringsAnagrams('neural', 'unreal') ? 'True' : 'False'; echo AreAnagrams::areStringsAnagrams('sample', 'Maples') ? 'True' : 'False'; echo AreAnagrams::areStringsAnagrams('better', 'brttee') ? 'True' : 'False'; echo AreAnagrams::areStringsAnagrams('letter to editor', 'Retorted Toilet') ? 'True' : 'False'; echo AreAnagrams::areStringsAnagrams('letter to editor', 'Delete Riot Trot') ? 'True' : 'False'; echo AreAnagrams::areStringsAnagrams('letter to editor', 'Loitered Totter') ? 'True' : 'False';
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 7
Branch analysis from position: 5
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 16
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 25
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 34
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 41, Position 2 = 43
Branch analysis from position: 41
1 jumps found. (Code = 42) Position 1 = 44
Branch analysis from position: 44
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 52
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 52
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 43
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 52
Branch analysis from position: 50
Branch analysis from position: 52
Branch analysis from position: 34
2 jumps found. (Code = 43) Position 1 = 41, Position 2 = 43
Branch analysis from position: 41
Branch analysis from position: 43
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 34
Branch analysis from position: 32
Branch analysis from position: 34
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 25
Branch analysis from position: 23
Branch analysis from position: 25
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 16
Branch analysis from position: 14
Branch analysis from position: 16
filename:       /in/nrasi
function name:  (null)
number of ops:  55
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   32     0  E >   INIT_STATIC_METHOD_CALL                                  'AreAnagrams', 'areStringsAnagrams'
          1        SEND_VAL                                                 'neural'
          2        SEND_VAL                                                 'unreal'
          3        DO_FCALL                                      0  $0      
          4      > JMPZ                                                     $0, ->7
          5    >   QM_ASSIGN                                        ~1      'True'
          6      > JMP                                                      ->8
          7    >   QM_ASSIGN                                        ~1      'False'
          8    >   ECHO                                                     ~1
   34     9        INIT_STATIC_METHOD_CALL                                  'AreAnagrams', 'areStringsAnagrams'
         10        SEND_VAL                                                 'sample'
         11        SEND_VAL                                                 'Maples'
         12        DO_FCALL                                      0  $2      
         13      > JMPZ                                                     $2, ->16
         14    >   QM_ASSIGN                                        ~3      'True'
         15      > JMP                                                      ->17
         16    >   QM_ASSIGN                                        ~3      'False'
         17    >   ECHO                                                     ~3
   35    18        INIT_STATIC_METHOD_CALL                                  'AreAnagrams', 'areStringsAnagrams'
         19        SEND_VAL                                                 'better'
         20        SEND_VAL                                                 'brttee'
         21        DO_FCALL                                      0  $4      
         22      > JMPZ                                                     $4, ->25
         23    >   QM_ASSIGN                                        ~5      'True'
         24      > JMP                                                      ->26
         25    >   QM_ASSIGN                                        ~5      'False'
         26    >   ECHO                                                     ~5
   36    27        INIT_STATIC_METHOD_CALL                                  'AreAnagrams', 'areStringsAnagrams'
         28        SEND_VAL                                                 'letter+to+editor'
         29        SEND_VAL                                                 'Retorted+Toilet'
         30        DO_FCALL                                      0  $6      
         31      > JMPZ                                                     $6, ->34
         32    >   QM_ASSIGN                                        ~7      'True'
         33      > JMP                                                      ->35
         34    >   QM_ASSIGN                                        ~7      'False'
         35    >   ECHO                                                     ~7
   37    36        INIT_STATIC_METHOD_CALL                                  'AreAnagrams', 'areStringsAnagrams'
         37        SEND_VAL                                                 'letter+to+editor'
         38        SEND_VAL                                                 'Delete+Riot+Trot'
         39        DO_FCALL                                      0  $8      
         40      > JMPZ                                                     $8, ->43
         41    >   QM_ASSIGN                                        ~9      'True'
         42      > JMP                                                      ->44
         43    >   QM_ASSIGN                                        ~9      'False'
         44    >   ECHO                                                     ~9
   38    45        INIT_STATIC_METHOD_CALL                                  'AreAnagrams', 'areStringsAnagrams'
         46        SEND_VAL                                                 'letter+to+editor'
         47        SEND_VAL                                                 'Loitered+Totter'
         48        DO_FCALL                                      0  $10     
         49      > JMPZ                                                     $10, ->52
         50    >   QM_ASSIGN                                        ~11     'True'
         51      > JMP                                                      ->53
         52    >   QM_ASSIGN                                        ~11     'False'
         53    >   ECHO                                                     ~11
         54      > RETURN                                                   1

Class AreAnagrams:
Function arestringsanagrams:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 22, Position 2 = 36
Branch analysis from position: 22
2 jumps found. (Code = 78) Position 1 = 23, Position 2 = 36
Branch analysis from position: 23
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 28
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 33, Position 2 = 35
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
Branch analysis from position: 35
Branch analysis from position: 28
Branch analysis from position: 36
2 jumps found. (Code = 77) Position 1 = 38, Position 2 = 52
Branch analysis from position: 38
2 jumps found. (Code = 78) Position 1 = 39, Position 2 = 52
Branch analysis from position: 39
2 jumps found. (Code = 43) Position 1 = 42, Position 2 = 44
Branch analysis from position: 42
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 44
2 jumps found. (Code = 43) Position 1 = 49, Position 2 = 51
Branch analysis from position: 49
1 jumps found. (Code = 42) Position 1 = 38
Branch analysis from position: 38
Branch analysis from position: 51
Branch analysis from position: 52
2 jumps found. (Code = 43) Position 1 = 58, Position 2 = 59
Branch analysis from position: 58
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 59
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 52
Branch analysis from position: 36
filename:       /in/nrasi
function name:  areStringsAnagrams
number of ops:  61
compiled vars:  !0 = $a, !1 = $b, !2 = $a_arr, !3 = $b_arr, !4 = $az, !5 = $char, !6 = $comp_arr, !7 = $b_char
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   RECV                                             !0      
          1        RECV                                             !1      
    5     2        INIT_FCALL                                               'str_split'
          3        INIT_FCALL                                               'strtolower'
          4        SEND_VAR                                                 !0
          5        DO_ICALL                                         $8      
          6        SEND_VAR                                                 $8
          7        DO_ICALL                                         $9      
          8        ASSIGN                                                   !2, $9
    6     9        INIT_FCALL                                               'str_split'
         10        INIT_FCALL                                               'strtolower'
         11        SEND_VAR                                                 !1
         12        DO_ICALL                                         $11     
         13        SEND_VAR                                                 $11
         14        DO_ICALL                                         $12     
         15        ASSIGN                                                   !3, $12
    7    16        INIT_FCALL                                               'range'
         17        SEND_VAL                                                 'a'
         18        SEND_VAL                                                 'z'
         19        DO_ICALL                                         $14     
         20        ASSIGN                                                   !4, $14
    9    21      > FE_RESET_R                                       $16     !2, ->36
         22    > > FE_FETCH_R                                               $16, !5, ->36
   10    23    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~17     !6, !5
         24        BOOL_NOT                                         ~18     ~17
         25      > JMPZ                                                     ~18, ->28
   11    26    >   ASSIGN_DIM                                               !6, !5
         27        OP_DATA                                                  0
   13    28    >   INIT_FCALL                                               'in_array'
         29        SEND_VAR                                                 !5
         30        SEND_VAR                                                 !4
         31        DO_ICALL                                         $20     
         32      > JMPZ                                                     $20, ->35
   14    33    >   FETCH_DIM_RW                                     $21     !6, !5
         34        PRE_INC                                                  $21
    9    35    > > JMP                                                      ->22
         36    >   FE_FREE                                                  $16
   17    37      > FE_RESET_R                                       $23     !3, ->52
         38    > > FE_FETCH_R                                               $23, !7, ->52
   18    39    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~24     !6, !7
         40        BOOL_NOT                                         ~25     ~24
         41      > JMPZ                                                     ~25, ->44
   19    42    >   FE_FREE                                                  $23
         43      > RETURN                                                   <false>
   21    44    >   INIT_FCALL                                               'in_array'
         45        SEND_VAR                                                 !5
         46        SEND_VAR                                                 !4
         47        DO_ICALL                                         $26     
         48      > JMPZ                                                     $26, ->51
   22    49    >   FETCH_DIM_RW                                     $27     !6, !7
         50        PRE_DEC                                                  $27
   17    51    > > JMP                                                      ->38
         52    >   FE_FREE                                                  $23
   25    53        INIT_FCALL                                               'array_sum'
         54        SEND_VAR                                                 !6
         55        DO_ICALL                                         $29     
         56        IS_NOT_IDENTICAL                                         $29, 0
         57      > JMPZ                                                     ~30, ->59
   26    58    > > RETURN                                                   <false>
   28    59    > > RETURN                                                   <true>
   29    60*     > RETURN                                                   null

End of function arestringsanagrams

End of class AreAnagrams.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
192.86 ms | 1408 KiB | 23 Q