3v4l.org

run code in 300+ PHP versions simultaneously
<?php function buildVirtualData($data) { if (is_array($data)) { //check if is an array Walk trough to rebuild $temp = []; foreach ($data as $key => $value) { $temp[$key] = buildVirtualData($value); } return reduArray($temp); } elseif (valJson($data)) { //check if is an JSON, Walk through to rebuild as an array $json_obj = json_decode($data, true); foreach ($json_obj as $key1 => $json_sub_obj) { foreach ($json_sub_obj as $key2 => $value2) { if (is_array($value2)) { $temp = []; foreach ($value2 as $keyof => $valueof) { $temp[$keyof] = buildVirtualData($valueof); } $json_obj[$key1][$key2] = $temp; } else { if ('true' === $value2 || true === $value2) { $json_obj[$key1][$key2] = true; } elseif ('false' === $value2 || false === $value2) { $json_obj[$key1][$key2] = false; } else { $json_obj[$key1][$key2] = $value2; } } } return reduArray($json_obj); } } else { // if it is not an array or a JSON; evaluate the type if it is text and meets possible boolean values if ('true' === $data || true === $data) { $data = true; } elseif ('false' === $data || false === $data) { $data = false; } return $data; } } function valJson($var) //JSON Validator { if (!is_array($var)) { return ((json_decode($var) != null) && (is_object(json_decode($var)) || is_array(json_decode($var)))) ? true : false; } else { return false; } } function reduArray($array) //array Reductor { $result = $array; if (is_array($array)) { $check = true; foreach ($array as $key => $value) { if (!is_array($value)) { $check = false; break; } } if ($check) { $result = array_reduce($array, 'array_merge', []); } } return $result; } //Example Data //$_POST=[]; //$_POST['JsonData']='[{"firstname":""},{"lastname":""},{"email":""},{"countryCode":""},{"phone":""},{"i_signup_password":""},{"i_signup_password_rep":""},{"email":""},{"i_signin_password":""},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"}]'; //$_POST['otherdata']='otherdata'; //Execution of Function hover $_POST Variable. //$_POST=buildVirtualData($_POST); //$_POST=reduArray($_POST); //echo var_dump($_POST); $walter = reduArray( buildVirtualData( $_POST = [ 'JsonData' => '[{"firstname":""},{"lastname":""},{"email":""},{"countryCode":""},{"phone":""},{"i_signup_password":""},{"i_signup_password_rep":""},{"email":""},{"i_signin_password":""},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"},{"form":"d-sys-login"},{"process":"e-signin"}]' ] ) ); $mick = []; foreach ($_POST as $key => $value) { if ($key !== 'JsonData') { $mick[$key] = $value; } else { $mick = array_merge($mick, ...json_decode($value, true)); } } var_export($walter); echo "\n---\n"; var_export($mick);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 12, Position 2 = 30
Branch analysis from position: 12
2 jumps found. (Code = 78) Position 1 = 13, Position 2 = 30
Branch analysis from position: 13
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 19
Branch analysis from position: 16
1 jumps found. (Code = 42) Position 1 = 29
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 12
Branch analysis from position: 12
Branch analysis from position: 19
1 jumps found. (Code = 42) Position 1 = 12
Branch analysis from position: 12
Branch analysis from position: 30
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 30
filename:       /in/Ku53H
function name:  (null)
number of ops:  39
compiled vars:  !0 = $walter, !1 = $mick, !2 = $value, !3 = $key
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   76     0  E >   INIT_FCALL                                               'reduarray'
   77     1        INIT_FCALL                                               'buildvirtualdata'
   78     2        FETCH_W                      global              $4      '_POST'
          3        ASSIGN                                           ~5      $4, <array>
          4        SEND_VAL                                                 ~5
          5        DO_FCALL                                      0  $6      
          6        SEND_VAR                                                 $6
          7        DO_FCALL                                      0  $7      
   76     8        ASSIGN                                                   !0, $7
   84     9        ASSIGN                                                   !1, <array>
   85    10        FETCH_R                      global              ~10     '_POST'
         11      > FE_RESET_R                                       $11     ~10, ->30
         12    > > FE_FETCH_R                                       ~12     $11, !2, ->30
         13    >   ASSIGN                                                   !3, ~12
   86    14        IS_NOT_IDENTICAL                                         !3, 'JsonData'
         15      > JMPZ                                                     ~14, ->19
   87    16    >   ASSIGN_DIM                                               !1, !3
         17        OP_DATA                                                  !2
         18      > JMP                                                      ->29
   89    19    >   INIT_FCALL                                               'array_merge'
         20        SEND_VAR                                                 !1
         21        INIT_FCALL                                               'json_decode'
         22        SEND_VAR                                                 !2
         23        SEND_VAL                                                 <true>
         24        DO_ICALL                                         $16     
         25        SEND_UNPACK                                              $16
         26        CHECK_UNDEF_ARGS                                         
         27        DO_ICALL                                         $17     
         28        ASSIGN                                                   !1, $17
   85    29    > > JMP                                                      ->12
         30    >   FE_FREE                                                  $11
   93    31        INIT_FCALL                                               'var_export'
         32        SEND_VAR                                                 !0
         33        DO_ICALL                                                 
   94    34        ECHO                                                     '%0A---%0A'
   95    35        INIT_FCALL                                               'var_export'
         36        SEND_VAR                                                 !1
         37        DO_ICALL                                                 
         38      > RETURN                                                   1

Function buildvirtualdata:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 19
Branch analysis from position: 3
2 jumps found. (Code = 77) Position 1 = 5, Position 2 = 13
Branch analysis from position: 5
2 jumps found. (Code = 78) Position 1 = 6, Position 2 = 13
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 5
Branch analysis from position: 5
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 13
Branch analysis from position: 19
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 82
Branch analysis from position: 23
2 jumps found. (Code = 77) Position 1 = 29, Position 2 = 80
Branch analysis from position: 29
2 jumps found. (Code = 78) Position 1 = 30, Position 2 = 80
Branch analysis from position: 30
2 jumps found. (Code = 77) Position 1 = 32, Position 2 = 73
Branch analysis from position: 32
2 jumps found. (Code = 78) Position 1 = 33, Position 2 = 73
Branch analysis from position: 33
2 jumps found. (Code = 43) Position 1 = 36, Position 2 = 51
Branch analysis from position: 36
2 jumps found. (Code = 77) Position 1 = 38, Position 2 = 46
Branch analysis from position: 38
2 jumps found. (Code = 78) Position 1 = 39, Position 2 = 46
Branch analysis from position: 39
1 jumps found. (Code = 42) Position 1 = 38
Branch analysis from position: 38
Branch analysis from position: 46
1 jumps found. (Code = 42) Position 1 = 72
Branch analysis from position: 72
1 jumps found. (Code = 42) Position 1 = 32
Branch analysis from position: 32
Branch analysis from position: 46
Branch analysis from position: 51
2 jumps found. (Code = 47) Position 1 = 53, Position 2 = 55
Branch analysis from position: 53
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 60
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 72
Branch analysis from position: 72
Branch analysis from position: 60
2 jumps found. (Code = 47) Position 1 = 62, Position 2 = 64
Branch analysis from position: 62
2 jumps found. (Code = 43) Position 1 = 65, Position 2 = 69
Branch analysis from position: 65
1 jumps found. (Code = 42) Position 1 = 72
Branch analysis from position: 72
Branch analysis from position: 69
1 jumps found. (Code = 42) Position 1 = 32
Branch analysis from position: 32
Branch analysis from position: 64
Branch analysis from position: 55
Branch analysis from position: 73
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 73
Branch analysis from position: 80
1 jumps found. (Code = 42) Position 1 = 96
Branch analysis from position: 96
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 80
Branch analysis from position: 82
2 jumps found. (Code = 47) Position 1 = 84, Position 2 = 86
Branch analysis from position: 84
2 jumps found. (Code = 43) Position 1 = 87, Position 2 = 89
Branch analysis from position: 87
1 jumps found. (Code = 42) Position 1 = 95
Branch analysis from position: 95
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 89
2 jumps found. (Code = 47) Position 1 = 91, Position 2 = 93
Branch analysis from position: 91
2 jumps found. (Code = 43) Position 1 = 94, Position 2 = 95
Branch analysis from position: 94
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 95
Branch analysis from position: 93
Branch analysis from position: 86
filename:       /in/Ku53H
function name:  buildVirtualData
number of ops:  97
compiled vars:  !0 = $data, !1 = $temp, !2 = $value, !3 = $key, !4 = $json_obj, !5 = $json_sub_obj, !6 = $key1, !7 = $value2, !8 = $key2, !9 = $valueof, !10 = $keyof
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
    4     1        TYPE_CHECK                                  128          !0
          2      > JMPZ                                                     ~11, ->19
    5     3    >   ASSIGN                                                   !1, <array>
    6     4      > FE_RESET_R                                       $13     !0, ->13
          5    > > FE_FETCH_R                                       ~14     $13, !2, ->13
          6    >   ASSIGN                                                   !3, ~14
    7     7        INIT_FCALL_BY_NAME                                       'buildVirtualData'
          8        SEND_VAR_EX                                              !2
          9        DO_FCALL                                      0  $17     
         10        ASSIGN_DIM                                               !1, !3
         11        OP_DATA                                                  $17
    6    12      > JMP                                                      ->5
         13    >   FE_FREE                                                  $13
    9    14        INIT_FCALL_BY_NAME                                       'reduArray'
         15        SEND_VAR_EX                                              !1
         16        DO_FCALL                                      0  $18     
         17      > RETURN                                                   $18
         18*       JMP                                                      ->96
   10    19    >   INIT_FCALL_BY_NAME                                       'valJson'
         20        SEND_VAR_EX                                              !0
         21        DO_FCALL                                      0  $19     
         22      > JMPZ                                                     $19, ->82
   11    23    >   INIT_FCALL                                               'json_decode'
         24        SEND_VAR                                                 !0
         25        SEND_VAL                                                 <true>
         26        DO_ICALL                                         $20     
         27        ASSIGN                                                   !4, $20
   12    28      > FE_RESET_R                                       $22     !4, ->80
         29    > > FE_FETCH_R                                       ~23     $22, !5, ->80
         30    >   ASSIGN                                                   !6, ~23
   13    31      > FE_RESET_R                                       $25     !5, ->73
         32    > > FE_FETCH_R                                       ~26     $25, !7, ->73
         33    >   ASSIGN                                                   !8, ~26
   14    34        TYPE_CHECK                                  128          !7
         35      > JMPZ                                                     ~28, ->51
   15    36    >   ASSIGN                                                   !1, <array>
   16    37      > FE_RESET_R                                       $30     !7, ->46
         38    > > FE_FETCH_R                                       ~31     $30, !9, ->46
         39    >   ASSIGN                                                   !10, ~31
   17    40        INIT_FCALL_BY_NAME                                       'buildVirtualData'
         41        SEND_VAR_EX                                              !9
         42        DO_FCALL                                      0  $34     
         43        ASSIGN_DIM                                               !1, !10
         44        OP_DATA                                                  $34
   16    45      > JMP                                                      ->38
         46    >   FE_FREE                                                  $30
   19    47        FETCH_DIM_W                                      $35     !4, !6
         48        ASSIGN_DIM                                               $35, !8
         49        OP_DATA                                                  !1
         50      > JMP                                                      ->72
   21    51    >   IS_IDENTICAL                                     ~37     !7, 'true'
         52      > JMPNZ_EX                                         ~37     ~37, ->55
         53    >   TYPE_CHECK                                    8  ~38     !7
         54        BOOL                                             ~37     ~38
         55    > > JMPZ                                                     ~37, ->60
   22    56    >   FETCH_DIM_W                                      $39     !4, !6
         57        ASSIGN_DIM                                               $39, !8
         58        OP_DATA                                                  <true>
         59      > JMP                                                      ->72
   23    60    >   IS_IDENTICAL                                     ~41     !7, 'false'
         61      > JMPNZ_EX                                         ~41     ~41, ->64
         62    >   TYPE_CHECK                                    4  ~42     !7
         63        BOOL                                             ~41     ~42
         64    > > JMPZ                                                     ~41, ->69
   24    65    >   FETCH_DIM_W                                      $43     !4, !6
         66        ASSIGN_DIM                                               $43, !8
         67        OP_DATA                                                  <false>
         68      > JMP                                                      ->72
   26    69    >   FETCH_DIM_W                                      $45     !4, !6
         70        ASSIGN_DIM                                               $45, !8
         71        OP_DATA                                                  !7
   13    72    > > JMP                                                      ->32
         73    >   FE_FREE                                                  $25
   30    74        INIT_FCALL_BY_NAME                                       'reduArray'
         75        SEND_VAR_EX                                              !4
         76        DO_FCALL                                      0  $47     
         77        FE_FREE                                                  $22
         78      > RETURN                                                   $47
   12    79*       JMP                                                      ->29
         80    >   FE_FREE                                                  $22
         81      > JMP                                                      ->96
   33    82    >   IS_IDENTICAL                                     ~48     !0, 'true'
         83      > JMPNZ_EX                                         ~48     ~48, ->86
         84    >   TYPE_CHECK                                    8  ~49     !0
         85        BOOL                                             ~48     ~49
         86    > > JMPZ                                                     ~48, ->89
   34    87    >   ASSIGN                                                   !0, <true>
         88      > JMP                                                      ->95
   35    89    >   IS_IDENTICAL                                     ~51     !0, 'false'
         90      > JMPNZ_EX                                         ~51     ~51, ->93
         91    >   TYPE_CHECK                                    4  ~52     !0
         92        BOOL                                             ~51     ~52
         93    > > JMPZ                                                     ~51, ->95
   36    94    >   ASSIGN                                                   !0, <false>
   38    95    > > RETURN                                                   !0
   40    96    > > RETURN                                                   null

End of function buildvirtualdata

Function valjson:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 26
Branch analysis from position: 4
2 jumps found. (Code = 46) Position 1 = 9, Position 2 = 20
Branch analysis from position: 9
2 jumps found. (Code = 47) Position 1 = 14, Position 2 = 19
Branch analysis from position: 14
2 jumps found. (Code = 43) Position 1 = 21, Position 2 = 23
Branch analysis from position: 21
1 jumps found. (Code = 42) Position 1 = 24
Branch analysis from position: 24
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 23
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 19
Branch analysis from position: 20
Branch analysis from position: 26
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Ku53H
function name:  valJson
number of ops:  28
compiled vars:  !0 = $var
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   42     0  E >   RECV                                             !0      
   44     1        TYPE_CHECK                                  128  ~1      !0
          2        BOOL_NOT                                         ~2      ~1
          3      > JMPZ                                                     ~2, ->26
   45     4    >   INIT_FCALL                                               'json_decode'
          5        SEND_VAR                                                 !0
          6        DO_ICALL                                         $3      
          7        IS_NOT_EQUAL                                     ~4      $3, null
          8      > JMPZ_EX                                          ~4      ~4, ->20
   46     9    >   INIT_FCALL                                               'json_decode'
         10        SEND_VAR                                                 !0
         11        DO_ICALL                                         $5      
         12        TYPE_CHECK                                  256  ~6      $5
         13      > JMPNZ_EX                                         ~6      ~6, ->19
         14    >   INIT_FCALL                                               'json_decode'
         15        SEND_VAR                                                 !0
         16        DO_ICALL                                         $7      
         17        TYPE_CHECK                                  128  ~8      $7
         18        BOOL                                             ~6      ~8
         19    >   BOOL                                             ~4      ~6
         20    > > JMPZ                                                     ~4, ->23
         21    >   QM_ASSIGN                                        ~9      <true>
         22      > JMP                                                      ->24
         23    >   QM_ASSIGN                                        ~9      <false>
         24    > > RETURN                                                   ~9
         25*       JMP                                                      ->27
   48    26    > > RETURN                                                   <false>
   50    27*     > RETURN                                                   null

End of function valjson

Function reduarray:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 22
Branch analysis from position: 4
2 jumps found. (Code = 77) Position 1 = 6, Position 2 = 14
Branch analysis from position: 6
2 jumps found. (Code = 78) Position 1 = 7, Position 2 = 14
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 13
Branch analysis from position: 11
1 jumps found. (Code = 42) Position 1 = 14
Branch analysis from position: 14
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 22
Branch analysis from position: 16
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 22
Branch analysis from position: 13
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 14
Branch analysis from position: 14
Branch analysis from position: 22
filename:       /in/Ku53H
function name:  reduArray
number of ops:  24
compiled vars:  !0 = $array, !1 = $result, !2 = $check, !3 = $value, !4 = $key
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   51     0  E >   RECV                                             !0      
   53     1        ASSIGN                                                   !1, !0
   54     2        TYPE_CHECK                                  128          !0
          3      > JMPZ                                                     ~6, ->22
   55     4    >   ASSIGN                                                   !2, <true>
   56     5      > FE_RESET_R                                       $8      !0, ->14
          6    > > FE_FETCH_R                                       ~9      $8, !3, ->14
          7    >   ASSIGN                                                   !4, ~9
   57     8        TYPE_CHECK                                  128  ~11     !3
          9        BOOL_NOT                                         ~12     ~11
         10      > JMPZ                                                     ~12, ->13
   58    11    >   ASSIGN                                                   !2, <false>
   59    12      > JMP                                                      ->14
   56    13    > > JMP                                                      ->6
         14    >   FE_FREE                                                  $8
   62    15      > JMPZ                                                     !2, ->22
   63    16    >   INIT_FCALL                                               'array_reduce'
         17        SEND_VAR                                                 !0
         18        SEND_VAL                                                 'array_merge'
         19        SEND_VAL                                                 <array>
         20        DO_ICALL                                         $14     
         21        ASSIGN                                                   !1, $14
   66    22    > > RETURN                                                   !1
   67    23*     > RETURN                                                   null

End of function reduarray

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
177.37 ms | 1419 KiB | 23 Q