3v4l.org

run code in 300+ PHP versions simultaneously
<?php function ksortMultiDimensional(&$params = array()) { if (is_array($params)) { ksort($params); foreach ($params as &$p) { if (is_array($p)) { ksort($p); } } } } function process($params, $key, $version = 2) { ksortMultiDimensional($params); $baseString = prepareParams($params, $baseString); $baseString .= $key; if ($version == 2) { return md5($baseString); } return hash('sha256', $baseString); } function prepareParams($params = array(), $baseString = '') { foreach ($params as $key => $value) { if (!isset($value)) { continue; } if (is_array($value)) { foreach ($value as $k => $v) { $baseString .= $key . '[' . $k . ']' . '=' . ($v === false ? '0' : $v); } } else { $baseString .= $key . '=' . ($value === false ? '0' : $value); } } return $baseString; } $data = [ 'key1' => 'Hello', 'key2' => 2, 'key3' => [ 'key4' => 'hello', 'key5' => 'world', 'abc' => 'def', ], 'key0' => 'yolo', 'key11' => null, 'key111' => 1.2 ]; var_dump(process($data, 'my-private-key', 3));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/CiGCo
function name:  (null)
number of ops:  10
compiled vars:  !0 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   43     0  E >   ASSIGN                                                   !0, <array>
   56     1        INIT_FCALL                                               'var_dump'
          2        INIT_FCALL                                               'process'
          3        SEND_VAR                                                 !0
          4        SEND_VAL                                                 'my-private-key'
          5        SEND_VAL                                                 3
          6        DO_FCALL                                      0  $2      
          7        SEND_VAR                                                 $2
          8        DO_ICALL                                                 
          9      > RETURN                                                   1

Function ksortmultidimensional:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 15
Branch analysis from position: 3
2 jumps found. (Code = 125) Position 1 = 7, Position 2 = 14
Branch analysis from position: 7
2 jumps found. (Code = 126) Position 1 = 8, Position 2 = 14
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 10, Position 2 = 13
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
Branch analysis from position: 13
Branch analysis from position: 14
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 14
Branch analysis from position: 15
filename:       /in/CiGCo
function name:  ksortMultiDimensional
number of ops:  16
compiled vars:  !0 = $params, !1 = $p
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV_INIT                                        !0      <array>
    5     1        TYPE_CHECK                                  128          !0
          2      > JMPZ                                                     ~2, ->15
    6     3    >   INIT_FCALL                                               'ksort'
          4        SEND_REF                                                 !0
          5        DO_ICALL                                                 
    7     6      > FE_RESET_RW                                      $4      !0, ->14
          7    > > FE_FETCH_RW                                              $4, !1, ->14
    8     8    >   TYPE_CHECK                                  128          !1
          9      > JMPZ                                                     ~5, ->13
    9    10    >   INIT_FCALL                                               'ksort'
         11        SEND_REF                                                 !1
         12        DO_ICALL                                                 
    7    13    > > JMP                                                      ->7
         14    >   FE_FREE                                                  $4
   13    15    > > RETURN                                                   null

End of function ksortmultidimensional

Function process:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 18
Branch analysis from position: 14
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 18
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/CiGCo
function name:  process
number of ops:  24
compiled vars:  !0 = $params, !1 = $key, !2 = $version, !3 = $baseString
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   15     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV_INIT                                        !2      2
   17     3        INIT_FCALL                                               'ksortmultidimensional'
          4        SEND_REF                                                 !0
          5        DO_FCALL                                      0          
   18     6        INIT_FCALL_BY_NAME                                       'prepareParams'
          7        SEND_VAR_EX                                              !0
          8        SEND_VAR_EX                                              !3
          9        DO_FCALL                                      0  $5      
         10        ASSIGN                                                   !3, $5
   19    11        ASSIGN_OP                                     8          !3, !1
   20    12        IS_EQUAL                                                 !2, 2
         13      > JMPZ                                                     ~8, ->18
   21    14    >   INIT_FCALL                                               'md5'
         15        SEND_VAR                                                 !3
         16        DO_ICALL                                         $9      
         17      > RETURN                                                   $9
   23    18    >   INIT_FCALL                                               'hash'
         19        SEND_VAL                                                 'sha256'
         20        SEND_VAR                                                 !3
         21        DO_ICALL                                         $10     
         22      > RETURN                                                   $10
   24    23*     > RETURN                                                   null

End of function process

Function prepareparams:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 3, Position 2 = 37
Branch analysis from position: 3
2 jumps found. (Code = 78) Position 1 = 4, Position 2 = 37
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 9
Branch analysis from position: 8
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 9
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 28
Branch analysis from position: 11
2 jumps found. (Code = 77) Position 1 = 12, Position 2 = 26
Branch analysis from position: 12
2 jumps found. (Code = 78) Position 1 = 13, Position 2 = 26
Branch analysis from position: 13
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 22
Branch analysis from position: 20
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 12
Branch analysis from position: 12
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 12
Branch analysis from position: 12
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 36
Branch analysis from position: 36
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 26
Branch analysis from position: 28
2 jumps found. (Code = 43) Position 1 = 31, Position 2 = 33
Branch analysis from position: 31
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 37
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 37
filename:       /in/CiGCo
function name:  prepareParams
number of ops:  40
compiled vars:  !0 = $params, !1 = $baseString, !2 = $value, !3 = $key, !4 = $v, !5 = $k
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   26     0  E >   RECV_INIT                                        !0      <array>
          1        RECV_INIT                                        !1      ''
   28     2      > FE_RESET_R                                       $6      !0, ->37
          3    > > FE_FETCH_R                                       ~7      $6, !2, ->37
          4    >   ASSIGN                                                   !3, ~7
   29     5        ISSET_ISEMPTY_CV                                 ~9      !2
          6        BOOL_NOT                                         ~10     ~9
          7      > JMPZ                                                     ~10, ->9
   30     8    > > JMP                                                      ->3
   32     9    >   TYPE_CHECK                                  128          !2
         10      > JMPZ                                                     ~11, ->28
   33    11    > > FE_RESET_R                                       $12     !2, ->26
         12    > > FE_FETCH_R                                       ~13     $12, !4, ->26
         13    >   ASSIGN                                                   !5, ~13
   34    14        CONCAT                                           ~15     !3, '%5B'
         15        CONCAT                                           ~16     ~15, !5
         16        CONCAT                                           ~17     ~16, '%5D'
         17        CONCAT                                           ~18     ~17, '%3D'
         18        TYPE_CHECK                                    4          !4
         19      > JMPZ                                                     ~19, ->22
         20    >   QM_ASSIGN                                        ~20     '0'
         21      > JMP                                                      ->23
         22    >   QM_ASSIGN                                        ~20     !4
         23    >   CONCAT                                           ~21     ~18, ~20
         24        ASSIGN_OP                                     8          !1, ~21
   33    25      > JMP                                                      ->12
         26    >   FE_FREE                                                  $12
         27      > JMP                                                      ->36
   37    28    >   CONCAT                                           ~23     !3, '%3D'
         29        TYPE_CHECK                                    4          !2
         30      > JMPZ                                                     ~24, ->33
         31    >   QM_ASSIGN                                        ~25     '0'
         32      > JMP                                                      ->34
         33    >   QM_ASSIGN                                        ~25     !2
         34    >   CONCAT                                           ~26     ~23, ~25
         35        ASSIGN_OP                                     8          !1, ~26
   28    36    > > JMP                                                      ->3
         37    >   FE_FREE                                                  $6
   40    38      > RETURN                                                   !1
   41    39*     > RETURN                                                   null

End of function prepareparams

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
151.78 ms | 1407 KiB | 23 Q