3v4l.org

run code in 300+ PHP versions simultaneously
<?php function specialParse(array &$data) { $special = array( '0','0','0','0','0','0','0','0' ); $specialKeys = array( 'Общеразвивающей направленности' => 0, 'Оздоровительной направленности' => 1, 'Компенсирующей направленности' => 2, 'Комбинированной направленности' => 3 ); $d = null; if (isset($data['treeName']['Сведения об ОУ']['Рекомендуемая направленность группы'])) { $d = $data['treeName']['Сведения об ОУ']['Рекомендуемая направленность группы']; $data['treeName']['Рекомендуемая направленность группы'] = $d; } elseif (isset($data['treeName']['Рекомендуемая направленность группы'])) { $d = $data['treeName']['Рекомендуемая направленность группы']; $data['treeName']['Сведения об ОУ']['Рекомендуемая направленность группы'] = $d; } if($d) { if(is_array($d)) { foreach($d as $key => $value) { if(isset($value['value']) && $value['value'] == 'true') { if(isset($specialKeys[$key])) { $special[ $specialKeys[$key] ] = 1; } } elseif (is_array($value)) { foreach ($value as $v) { if(isset($v['value']) && $v['value'] == 'true') { if(isset($specialKeys[$key])) { $special[ $specialKeys[$key] ] = 1; } } } // Если учитывать и эту ситуацию, то тогда нет сымысла в некоторых предыдущих проверках } elseif (isset($specialKeys[$key])) { $special[ $specialKeys[$key] ] = 1; } } } return implode('', $special); } return false; } $t = array( "Оздоровительной направленности" => array(), "Компенсирующей направленности" => array() ); $t2 = array('treeName' => array( 'Рекомендуемая направленность группы' => $t )); var_dump($t2);die; var_dump(specialParse($t));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 79) Position 1 = -2
filename:       /in/dc0Vf
function name:  (null)
number of ops:  15
compiled vars:  !0 = $t, !1 = $t2
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   51     0  E >   ASSIGN                                                   !0, <array>
   57     1        INIT_ARRAY                                       ~3      !0, '%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D0%B0%D1%8F+%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C+%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B'
          2        INIT_ARRAY                                       ~4      ~3, 'treeName'
   56     3        ASSIGN                                                   !1, ~4
   59     4        INIT_FCALL                                               'var_dump'
          5        SEND_VAR                                                 !1
          6        DO_ICALL                                                 
          7      > EXIT                                                     
   60     8*       INIT_FCALL                                               'var_dump'
          9*       INIT_FCALL                                               'specialparse'
         10*       SEND_REF                                                 !0
         11*       DO_FCALL                                      0  $7      
         12*       SEND_VAR                                                 $7
         13*       DO_ICALL                                                 
         14*     > RETURN                                                   1

Function specialparse:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 16
Branch analysis from position: 8
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 74
Branch analysis from position: 27
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 69
Branch analysis from position: 29
2 jumps found. (Code = 77) Position 1 = 30, Position 2 = 68
Branch analysis from position: 30
2 jumps found. (Code = 78) Position 1 = 31, Position 2 = 68
Branch analysis from position: 31
2 jumps found. (Code = 46) Position 1 = 34, Position 2 = 37
Branch analysis from position: 34
2 jumps found. (Code = 43) Position 1 = 38, Position 2 = 44
Branch analysis from position: 38
2 jumps found. (Code = 43) Position 1 = 40, Position 2 = 43
Branch analysis from position: 40
1 jumps found. (Code = 42) Position 1 = 67
Branch analysis from position: 67
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
Branch analysis from position: 43
Branch analysis from position: 44
2 jumps found. (Code = 43) Position 1 = 46, Position 2 = 62
Branch analysis from position: 46
2 jumps found. (Code = 77) Position 1 = 47, Position 2 = 60
Branch analysis from position: 47
2 jumps found. (Code = 78) Position 1 = 48, Position 2 = 60
Branch analysis from position: 48
2 jumps found. (Code = 46) Position 1 = 50, Position 2 = 53
Branch analysis from position: 50
2 jumps found. (Code = 43) Position 1 = 54, Position 2 = 59
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 59
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
Branch analysis from position: 59
Branch analysis from position: 59
Branch analysis from position: 53
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 67
Branch analysis from position: 67
Branch analysis from position: 60
Branch analysis from position: 62
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 67
Branch analysis from position: 64
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
Branch analysis from position: 67
Branch analysis from position: 37
Branch analysis from position: 68
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 68
Branch analysis from position: 69
Branch analysis from position: 74
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 19, Position 2 = 26
Branch analysis from position: 19
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 74
Branch analysis from position: 27
Branch analysis from position: 74
Branch analysis from position: 26
filename:       /in/dc0Vf
function name:  specialParse
number of ops:  76
compiled vars:  !0 = $data, !1 = $special, !2 = $specialKeys, !3 = $d, !4 = $value, !5 = $key, !6 = $v
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    5     1        ASSIGN                                                   !1, <array>
    6     2        ASSIGN                                                   !2, <array>
   13     3        ASSIGN                                                   !3, null
   15     4        FETCH_DIM_IS                                     ~10     !0, 'treeName'
          5        FETCH_DIM_IS                                     ~11     ~10, '%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F+%D0%BE%D0%B1+%D0%9E%D0%A3'
          6        ISSET_ISEMPTY_DIM_OBJ                         0          ~11, '%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D0%B0%D1%8F+%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C+%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B'
          7      > JMPZ                                                     ~12, ->16
   16     8    >   FETCH_DIM_R                                      ~13     !0, 'treeName'
          9        FETCH_DIM_R                                      ~14     ~13, '%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F+%D0%BE%D0%B1+%D0%9E%D0%A3'
         10        FETCH_DIM_R                                      ~15     ~14, '%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D0%B0%D1%8F+%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C+%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B'
         11        ASSIGN                                                   !3, ~15
   17    12        FETCH_DIM_W                                      $17     !0, 'treeName'
         13        ASSIGN_DIM                                               $17, '%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D0%B0%D1%8F+%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C+%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B'
         14        OP_DATA                                                  !3
         15      > JMP                                                      ->26
   18    16    >   FETCH_DIM_IS                                     ~19     !0, 'treeName'
         17        ISSET_ISEMPTY_DIM_OBJ                         0          ~19, '%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D0%B0%D1%8F+%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C+%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B'
         18      > JMPZ                                                     ~20, ->26
   19    19    >   FETCH_DIM_R                                      ~21     !0, 'treeName'
         20        FETCH_DIM_R                                      ~22     ~21, '%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D0%B0%D1%8F+%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C+%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B'
         21        ASSIGN                                                   !3, ~22
   20    22        FETCH_DIM_W                                      $24     !0, 'treeName'
         23        FETCH_DIM_W                                      $25     $24, '%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F+%D0%BE%D0%B1+%D0%9E%D0%A3'
         24        ASSIGN_DIM                                               $25, '%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D0%B0%D1%8F+%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C+%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D1%8B'
         25        OP_DATA                                                  !3
   23    26    > > JMPZ                                                     !3, ->74
   24    27    >   TYPE_CHECK                                  128          !3
         28      > JMPZ                                                     ~27, ->69
   25    29    > > FE_RESET_R                                       $28     !3, ->68
         30    > > FE_FETCH_R                                       ~29     $28, !4, ->68
         31    >   ASSIGN                                                   !5, ~29
   26    32        ISSET_ISEMPTY_DIM_OBJ                         0  ~31     !4, 'value'
         33      > JMPZ_EX                                          ~31     ~31, ->37
         34    >   FETCH_DIM_R                                      ~32     !4, 'value'
         35        IS_EQUAL                                         ~33     ~32, 'true'
         36        BOOL                                             ~31     ~33
         37    > > JMPZ                                                     ~31, ->44
   27    38    >   ISSET_ISEMPTY_DIM_OBJ                         0          !2, !5
         39      > JMPZ                                                     ~34, ->43
   28    40    >   FETCH_DIM_R                                      ~35     !2, !5
         41        ASSIGN_DIM                                               !1, ~35
         42        OP_DATA                                                  1
         43    > > JMP                                                      ->67
   30    44    >   TYPE_CHECK                                  128          !4
         45      > JMPZ                                                     ~37, ->62
   31    46    > > FE_RESET_R                                       $38     !4, ->60
         47    > > FE_FETCH_R                                               $38, !6, ->60
   32    48    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~39     !6, 'value'
         49      > JMPZ_EX                                          ~39     ~39, ->53
         50    >   FETCH_DIM_R                                      ~40     !6, 'value'
         51        IS_EQUAL                                         ~41     ~40, 'true'
         52        BOOL                                             ~39     ~41
         53    > > JMPZ                                                     ~39, ->59
   33    54    >   ISSET_ISEMPTY_DIM_OBJ                         0          !2, !5
         55      > JMPZ                                                     ~42, ->59
   34    56    >   FETCH_DIM_R                                      ~43     !2, !5
         57        ASSIGN_DIM                                               !1, ~43
         58        OP_DATA                                                  1
   31    59    > > JMP                                                      ->47
         60    >   FE_FREE                                                  $38
         61      > JMP                                                      ->67
   39    62    >   ISSET_ISEMPTY_DIM_OBJ                         0          !2, !5
         63      > JMPZ                                                     ~45, ->67
   40    64    >   FETCH_DIM_R                                      ~46     !2, !5
         65        ASSIGN_DIM                                               !1, ~46
         66        OP_DATA                                                  1
   25    67    > > JMP                                                      ->30
         68    >   FE_FREE                                                  $28
   45    69    >   INIT_FCALL                                               'implode'
         70        SEND_VAL                                                 ''
         71        SEND_VAR                                                 !1
         72        DO_ICALL                                         $48     
         73      > RETURN                                                   $48
   48    74    > > RETURN                                                   <false>
   49    75*     > RETURN                                                   null

End of function specialparse

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
173.92 ms | 1411 KiB | 18 Q