3v4l.org

run code in 500+ PHP versions simultaneously
<?php $array = [ 'first_level' => [ 'dir_3' => [ 'subdir_1' => [ 'file_2.mp4' => (object) [ 'name' => 'file_2.mp4' ], 'file_1.mp4' => (object) [ 'name' => 'file_1.mp4' ] ] ], 'dir_1' => [ 'subdir_2' => [ 'file_6.mp4' => (object) [ 'name' => 'file_6.mp4' ], 'file_9.mp4' => (object) [ 'name' => 'file_9.mp4' ], 'file_7.mp4' => (object) [ 'name' => 'file_7.mp4' ], 'file_17.mp4' => (object) [ 'name' => 'file_17.mp4' ], ], 'subdir_1' => [ 'file_8.mp4' => (object) [ 'name' => 'file_8.mp4' ], ] ] ], 'fake_level' => [ 'dir_7' => [ 'subdir_1' => [ 'file_5.mp4' => (object) [ 'name' => 'file_5.mp4', 'size' => 56, 'active' => true, ], 'file_19.mp4' => (object) [ 'name' => 'file_19.mp4', 'size' => 77, 'active' => false, ], 'file_33.mp4' => (object) [ 'name' => 'file_33.mp4', 'size' => 81, 'active' => true, ], ] ], 'dir_13' => [], 'dir_101' => [], 'dir_66' => [], ] ]; function nat_ksort_r(&$data): void { if (is_array($data)) { ksort($data, SORT_NATURAL); foreach ($data as &$item) { (__METHOD__)($item); } } } nat_ksort_r($array); var_export($array);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/BMecY
function name:  (null)
number of ops:  40
compiled vars:  !0 = $array
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    8     0  E >   CAST                                              8  ~1      <array>
          1        INIT_ARRAY                                           ~2      ~1, 'file_2.mp4'
          2        CAST                                              8  ~3      <array>
          3        ADD_ARRAY_ELEMENT                                    ~2      ~3, 'file_1.mp4'
          4        INIT_ARRAY                                           ~4      ~2, 'subdir_1'
          5        INIT_ARRAY                                           ~5      ~4, 'dir_3'
          6        CAST                                              8  ~6      <array>
          7        INIT_ARRAY                                           ~7      ~6, 'file_6.mp4'
          8        CAST                                              8  ~8      <array>
          9        ADD_ARRAY_ELEMENT                                    ~7      ~8, 'file_9.mp4'
         10        CAST                                              8  ~9      <array>
         11        ADD_ARRAY_ELEMENT                                    ~7      ~9, 'file_7.mp4'
         12        CAST                                              8  ~10     <array>
         13        ADD_ARRAY_ELEMENT                                    ~7      ~10, 'file_17.mp4'
         14        INIT_ARRAY                                           ~11     ~7, 'subdir_2'
         15        CAST                                              8  ~12     <array>
         16        INIT_ARRAY                                           ~13     ~12, 'file_8.mp4'
         17        ADD_ARRAY_ELEMENT                                    ~11     ~13, 'subdir_1'
         18        ADD_ARRAY_ELEMENT                                    ~5      ~11, 'dir_1'
         19        INIT_ARRAY                                           ~14     ~5, 'first_level'
         20        CAST                                              8  ~15     <array>
         21        INIT_ARRAY                                           ~16     ~15, 'file_5.mp4'
         22        CAST                                              8  ~17     <array>
         23        ADD_ARRAY_ELEMENT                                    ~16     ~17, 'file_19.mp4'
         24        CAST                                              8  ~18     <array>
         25        ADD_ARRAY_ELEMENT                                    ~16     ~18, 'file_33.mp4'
         26        INIT_ARRAY                                           ~19     ~16, 'subdir_1'
         27        INIT_ARRAY                                           ~20     ~19, 'dir_7'
         28        ADD_ARRAY_ELEMENT                                    ~20     <array>, 'dir_13'
         29        ADD_ARRAY_ELEMENT                                    ~20     <array>, 'dir_101'
         30        ADD_ARRAY_ELEMENT                                    ~20     <array>, 'dir_66'
         31        ADD_ARRAY_ELEMENT                                    ~14     ~20, 'fake_level'
    3    32        ASSIGN                                                       !0, ~14
   73    33        INIT_FCALL                                                   'nat_ksort_r'
         34        SEND_REF                                                     !0
         35        DO_FCALL                                          0          
   74    36        INIT_FCALL                                                   'var_export'
         37        SEND_VAR                                                     !0
         38        DO_ICALL                                                     
         39      > RETURN                                                       1

Function nat_ksort_r:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 14
Branch analysis from position: 3
2 jumps found. (Code = 125) Position 1 = 8, Position 2 = 13
Branch analysis from position: 8
2 jumps found. (Code = 126) Position 1 = 9, Position 2 = 13
Branch analysis from position: 9
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 13
Branch analysis from position: 14
filename:       /in/BMecY
function name:  nat_ksort_r
number of ops:  15
compiled vars:  !0 = $data, !1 = $item
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   63     0  E >   RECV                                                 !0      
   65     1        TYPE_CHECK                                      128          !0
          2      > JMPZ                                                         ~2, ->14
   66     3    >   INIT_FCALL                                                   'ksort'
          4        SEND_REF                                                     !0
          5        SEND_VAL                                                     6
          6        DO_ICALL                                                     
   67     7      > FE_RESET_RW                                          $4      !0, ->13
          8    > > FE_FETCH_RW                                                  $4, !1, ->13
   68     9    >   INIT_FCALL_BY_NAME                                           'nat_ksort_r'
         10        SEND_VAR_EX                                                  !1
         11        DO_FCALL                                          0          
   67    12      > JMP                                                          ->8
         13    >   FE_FREE                                                      $4
   71    14    > > RETURN                                                       null

End of function nat_ksort_r

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
185.01 ms | 1976 KiB | 16 Q