3v4l.org

run code in 300+ PHP versions simultaneously
<?php $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); $arr = array(); $cert = new stdClass(); $cert->Hash = '1132775296C8A1A3A7BDE742089458B7D3F8FD64'; $cert->SerialNumber = '424DB63300050000D15B'; $cert->KeyDate = date('d.n.Y', strtotime('2009-10-20 12:47:00')); $cert->ExpDate = date('d.n.Y', strtotime('2010-10-20 12:57:00')); $cert->TypeID = 1; $cert->TypeName = 'Федеральный'; $cert->StatusID = 2; $cert->StatusName = 'недействующий'; $cert->PersonID = '581'; $cert->PersonName = 'Иванов Иван Иванович'; $arr[] = $cert; $cert = new stdClass(); $cert->Hash = '2132775296C8A1A3A7BDE742089458B7D3F8FD64'; $cert->SerialNumber = '424DB63300050000D15B'; $cert->KeyDate = date('d.n.Y', strtotime('2010-10-20 12:57:00')); $cert->ExpDate = date('d.n.Y', strtotime('2011-10-20 12:57:00')); $cert->TypeID = 1; $cert->TypeName = 'Федеральный'; $cert->StatusID = 2; $cert->StatusName = 'недействующий'; $cert->PersonID = '581'; $cert->PersonName = 'Петров Петр Петрович'; $arr[] = $cert; $cert = new stdClass(); $cert->Hash = '3132775296C8A1A3A7BDE742089458B7D3F8FD64'; $cert->SerialNumber = '424DB63300050000D15B'; $cert->KeyDate = date('d.n.Y', strtotime('2011-10-20 12:57:00')); $cert->ExpDate = date('d.n.Y', strtotime('2012-10-20 12:57:00')); $cert->TypeID = 1; $cert->TypeName = 'Федеральный'; $cert->StatusID = 2; $cert->StatusName = 'недействующий'; $cert->PersonID = '581'; $cert->PersonName = 'Сидоров Сидр Сидорович'; $arr[] = $cert; $volume = array(); // Получение списка столбцов foreach ($cert as $key => $row) { $volume[$key] = $row->KeyDate; } // Сортируем данные по volume по убыванию и по edition по возрастанию // Добавляем $data в качестве последнего параметра, для сортировки по общему ключу array_multisort($volume, SORT_DESC, $cert); print_r($cert);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 132, Position 2 = 138
Branch analysis from position: 132
2 jumps found. (Code = 78) Position 1 = 133, Position 2 = 138
Branch analysis from position: 133
1 jumps found. (Code = 42) Position 1 = 132
Branch analysis from position: 132
Branch analysis from position: 138
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 138
filename:       /in/dltBg
function name:  (null)
number of ops:  148
compiled vars:  !0 = $data, !1 = $arr, !2 = $cert, !3 = $volume, !4 = $row, !5 = $key
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN_DIM                                               !0
          1        OP_DATA                                                  <array>
    3     2        ASSIGN_DIM                                               !0
          3        OP_DATA                                                  <array>
    4     4        ASSIGN_DIM                                               !0
          5        OP_DATA                                                  <array>
    5     6        ASSIGN_DIM                                               !0
          7        OP_DATA                                                  <array>
    6     8        ASSIGN_DIM                                               !0
          9        OP_DATA                                                  <array>
    7    10        ASSIGN_DIM                                               !0
         11        OP_DATA                                                  <array>
    9    12        ASSIGN                                                   !1, <array>
   10    13        NEW                                              $13     'stdClass'
         14        DO_FCALL                                      0          
         15        ASSIGN                                                   !2, $13
   11    16        ASSIGN_OBJ                                               !2, 'Hash'
         17        OP_DATA                                                  '1132775296C8A1A3A7BDE742089458B7D3F8FD64'
   12    18        ASSIGN_OBJ                                               !2, 'SerialNumber'
         19        OP_DATA                                                  '424DB63300050000D15B'
   13    20        INIT_FCALL                                               'date'
         21        SEND_VAL                                                 'd.n.Y'
         22        INIT_FCALL                                               'strtotime'
         23        SEND_VAL                                                 '2009-10-20+12%3A47%3A00'
         24        DO_ICALL                                         $19     
         25        SEND_VAR                                                 $19
         26        DO_ICALL                                         $20     
         27        ASSIGN_OBJ                                               !2, 'KeyDate'
         28        OP_DATA                                                  $20
   14    29        INIT_FCALL                                               'date'
         30        SEND_VAL                                                 'd.n.Y'
         31        INIT_FCALL                                               'strtotime'
         32        SEND_VAL                                                 '2010-10-20+12%3A57%3A00'
         33        DO_ICALL                                         $22     
         34        SEND_VAR                                                 $22
         35        DO_ICALL                                         $23     
         36        ASSIGN_OBJ                                               !2, 'ExpDate'
         37        OP_DATA                                                  $23
   15    38        ASSIGN_OBJ                                               !2, 'TypeID'
         39        OP_DATA                                                  1
   16    40        ASSIGN_OBJ                                               !2, 'TypeName'
         41        OP_DATA                                                  '%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9'
   17    42        ASSIGN_OBJ                                               !2, 'StatusID'
         43        OP_DATA                                                  2
   18    44        ASSIGN_OBJ                                               !2, 'StatusName'
         45        OP_DATA                                                  '%D0%BD%D0%B5%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%89%D0%B8%D0%B9'
   19    46        ASSIGN_OBJ                                               !2, 'PersonID'
         47        OP_DATA                                                  '581'
   20    48        ASSIGN_OBJ                                               !2, 'PersonName'
         49        OP_DATA                                                  '%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2+%D0%98%D0%B2%D0%B0%D0%BD+%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87'
   21    50        ASSIGN_DIM                                               !1
         51        OP_DATA                                                  !2
   24    52        NEW                                              $31     'stdClass'
         53        DO_FCALL                                      0          
         54        ASSIGN                                                   !2, $31
   25    55        ASSIGN_OBJ                                               !2, 'Hash'
         56        OP_DATA                                                  '2132775296C8A1A3A7BDE742089458B7D3F8FD64'
   26    57        ASSIGN_OBJ                                               !2, 'SerialNumber'
         58        OP_DATA                                                  '424DB63300050000D15B'
   27    59        INIT_FCALL                                               'date'
         60        SEND_VAL                                                 'd.n.Y'
         61        INIT_FCALL                                               'strtotime'
         62        SEND_VAL                                                 '2010-10-20+12%3A57%3A00'
         63        DO_ICALL                                         $37     
         64        SEND_VAR                                                 $37
         65        DO_ICALL                                         $38     
         66        ASSIGN_OBJ                                               !2, 'KeyDate'
         67        OP_DATA                                                  $38
   28    68        INIT_FCALL                                               'date'
         69        SEND_VAL                                                 'd.n.Y'
         70        INIT_FCALL                                               'strtotime'
         71        SEND_VAL                                                 '2011-10-20+12%3A57%3A00'
         72        DO_ICALL                                         $40     
         73        SEND_VAR                                                 $40
         74        DO_ICALL                                         $41     
         75        ASSIGN_OBJ                                               !2, 'ExpDate'
         76        OP_DATA                                                  $41
   29    77        ASSIGN_OBJ                                               !2, 'TypeID'
         78        OP_DATA                                                  1
   30    79        ASSIGN_OBJ                                               !2, 'TypeName'
         80        OP_DATA                                                  '%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9'
   31    81        ASSIGN_OBJ                                               !2, 'StatusID'
         82        OP_DATA                                                  2
   32    83        ASSIGN_OBJ                                               !2, 'StatusName'
         84        OP_DATA                                                  '%D0%BD%D0%B5%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%89%D0%B8%D0%B9'
   33    85        ASSIGN_OBJ                                               !2, 'PersonID'
         86        OP_DATA                                                  '581'
   34    87        ASSIGN_OBJ                                               !2, 'PersonName'
         88        OP_DATA                                                  '%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2+%D0%9F%D0%B5%D1%82%D1%80+%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2%D0%B8%D1%87'
   35    89        ASSIGN_DIM                                               !1
         90        OP_DATA                                                  !2
   37    91        NEW                                              $49     'stdClass'
         92        DO_FCALL                                      0          
         93        ASSIGN                                                   !2, $49
   38    94        ASSIGN_OBJ                                               !2, 'Hash'
         95        OP_DATA                                                  '3132775296C8A1A3A7BDE742089458B7D3F8FD64'
   39    96        ASSIGN_OBJ                                               !2, 'SerialNumber'
         97        OP_DATA                                                  '424DB63300050000D15B'
   40    98        INIT_FCALL                                               'date'
         99        SEND_VAL                                                 'd.n.Y'
        100        INIT_FCALL                                               'strtotime'
        101        SEND_VAL                                                 '2011-10-20+12%3A57%3A00'
        102        DO_ICALL                                         $55     
        103        SEND_VAR                                                 $55
        104        DO_ICALL                                         $56     
        105        ASSIGN_OBJ                                               !2, 'KeyDate'
        106        OP_DATA                                                  $56
   41   107        INIT_FCALL                                               'date'
        108        SEND_VAL                                                 'd.n.Y'
        109        INIT_FCALL                                               'strtotime'
        110        SEND_VAL                                                 '2012-10-20+12%3A57%3A00'
        111        DO_ICALL                                         $58     
        112        SEND_VAR                                                 $58
        113        DO_ICALL                                         $59     
        114        ASSIGN_OBJ                                               !2, 'ExpDate'
        115        OP_DATA                                                  $59
   42   116        ASSIGN_OBJ                                               !2, 'TypeID'
        117        OP_DATA                                                  1
   43   118        ASSIGN_OBJ                                               !2, 'TypeName'
        119        OP_DATA                                                  '%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9'
   44   120        ASSIGN_OBJ                                               !2, 'StatusID'
        121        OP_DATA                                                  2
   45   122        ASSIGN_OBJ                                               !2, 'StatusName'
        123        OP_DATA                                                  '%D0%BD%D0%B5%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%89%D0%B8%D0%B9'
   46   124        ASSIGN_OBJ                                               !2, 'PersonID'
        125        OP_DATA                                                  '581'
   47   126        ASSIGN_OBJ                                               !2, 'PersonName'
        127        OP_DATA                                                  '%D0%A1%D0%B8%D0%B4%D0%BE%D1%80%D0%BE%D0%B2+%D0%A1%D0%B8%D0%B4%D1%80+%D0%A1%D0%B8%D0%B4%D0%BE%D1%80%D0%BE%D0%B2%D0%B8%D1%87'
   48   128        ASSIGN_DIM                                               !1
        129        OP_DATA                                                  !2
   51   130        ASSIGN                                                   !3, <array>
   54   131      > FE_RESET_R                                       $68     !2, ->138
        132    > > FE_FETCH_R                                       ~69     $68, !4, ->138
        133    >   ASSIGN                                                   !5, ~69
   55   134        FETCH_OBJ_R                                      ~72     !4, 'KeyDate'
        135        ASSIGN_DIM                                               !3, !5
        136        OP_DATA                                                  ~72
   54   137      > JMP                                                      ->132
        138    >   FE_FREE                                                  $68
   60   139        INIT_FCALL                                               'array_multisort'
        140        SEND_REF                                                 !3
        141        SEND_VAL                                                 3
        142        SEND_REF                                                 !2
        143        DO_ICALL                                                 
   63   144        INIT_FCALL                                               'print_r'
        145        SEND_VAR                                                 !2
        146        DO_ICALL                                                 
        147      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
153.32 ms | 1408 KiB | 21 Q