3v4l.org

run code in 300+ 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'
   11     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'
   18     6        CAST                                          8  ~6      <array>
          7        INIT_ARRAY                                       ~7      ~6, 'file_6.mp4'
   21     8        CAST                                          8  ~8      <array>
          9        ADD_ARRAY_ELEMENT                                ~7      ~8, 'file_9.mp4'
   24    10        CAST                                          8  ~9      <array>
         11        ADD_ARRAY_ELEMENT                                ~7      ~9, 'file_7.mp4'
   27    12        CAST                                          8  ~10     <array>
         13        ADD_ARRAY_ELEMENT                                ~7      ~10, 'file_17.mp4'
         14        INIT_ARRAY                                       ~11     ~7, 'subdir_2'
   32    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'
   41    20        CAST                                          8  ~15     <array>
         21        INIT_ARRAY                                       ~16     ~15, 'file_5.mp4'
   46    22        CAST                                          8  ~17     <array>
         23        ADD_ARRAY_ELEMENT                                ~16     ~17, 'file_19.mp4'
   51    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'
    8    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.0.0


preferences:
150.11 ms | 1010 KiB | 16 Q