3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * Works fine if the key are not numerical */ $arrTags = []; $arrTags['mango'] = 2; $arrTags['orange'] = 4; $arrTags['apple'] = 2; $arrTags['banana'] = 3; array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags); echo "Elegant solution works fine if keys are not numerical:\r\n"; var_dump($arrTags); /** * If keys are numerical, they will be ignored */ $arrTags = []; $arrTags[10] = 2; $arrTags[20] = 4; $arrTags[30] = 2; $arrTags[40] = 3; array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags); echo "If keys are numerical, they will be ignored:\r\n"; var_dump($arrTags); /** * A slightly less elegant solution will work. */ $arrTags = []; $arrTags[10] = 2; $arrTags[20] = 4; $arrTags[30] = 2; $arrTags[40] = 3; $keys= array_keys($arrTags); $values= array_values($arrTags); array_multisort($values, SORT_DESC, $keys, SORT_ASC); $arrTags = array_combine($keys, $values); echo "If numerical keys are important, the slightly less elegant solution will work:\r\n"; var_dump($arrTags);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/uUYUO
function name:  (null)
number of ops:  85
compiled vars:  !0 = $arrTags, !1 = $keys, !2 = $values
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    6     0  E >   ASSIGN                                                   !0, <array>
    7     1        ASSIGN_DIM                                               !0, 'mango'
          2        OP_DATA                                                  2
    8     3        ASSIGN_DIM                                               !0, 'orange'
          4        OP_DATA                                                  4
    9     5        ASSIGN_DIM                                               !0, 'apple'
          6        OP_DATA                                                  2
   10     7        ASSIGN_DIM                                               !0, 'banana'
          8        OP_DATA                                                  3
   13     9        INIT_FCALL                                               'array_multisort'
         10        INIT_FCALL                                               'array_values'
         11        SEND_VAR                                                 !0
         12        DO_ICALL                                         $8      
         13        SEND_VAL                                                 $8
         14        SEND_VAL                                                 3
         15        INIT_FCALL                                               'array_keys'
         16        SEND_VAR                                                 !0
         17        DO_ICALL                                         $9      
         18        SEND_VAL                                                 $9
         19        SEND_VAL                                                 4
         20        SEND_REF                                                 !0
         21        DO_ICALL                                                 
   15    22        ECHO                                                     'Elegant+solution+works+fine+if+keys+are+not+numerical%3A%0D%0A'
   16    23        INIT_FCALL                                               'var_dump'
         24        SEND_VAR                                                 !0
         25        DO_ICALL                                                 
   21    26        ASSIGN                                                   !0, <array>
   22    27        ASSIGN_DIM                                               !0, 10
         28        OP_DATA                                                  2
   23    29        ASSIGN_DIM                                               !0, 20
         30        OP_DATA                                                  4
   24    31        ASSIGN_DIM                                               !0, 30
         32        OP_DATA                                                  2
   25    33        ASSIGN_DIM                                               !0, 40
         34        OP_DATA                                                  3
   27    35        INIT_FCALL                                               'array_multisort'
         36        INIT_FCALL                                               'array_values'
         37        SEND_VAR                                                 !0
         38        DO_ICALL                                         $17     
         39        SEND_VAL                                                 $17
         40        SEND_VAL                                                 3
         41        INIT_FCALL                                               'array_keys'
         42        SEND_VAR                                                 !0
         43        DO_ICALL                                         $18     
         44        SEND_VAL                                                 $18
         45        SEND_VAL                                                 4
         46        SEND_REF                                                 !0
         47        DO_ICALL                                                 
   29    48        ECHO                                                     'If+keys+are+numerical%2C+they+will+be+ignored%3A%0D%0A'
   30    49        INIT_FCALL                                               'var_dump'
         50        SEND_VAR                                                 !0
         51        DO_ICALL                                                 
   35    52        ASSIGN                                                   !0, <array>
   36    53        ASSIGN_DIM                                               !0, 10
         54        OP_DATA                                                  2
   37    55        ASSIGN_DIM                                               !0, 20
         56        OP_DATA                                                  4
   38    57        ASSIGN_DIM                                               !0, 30
         58        OP_DATA                                                  2
   39    59        ASSIGN_DIM                                               !0, 40
         60        OP_DATA                                                  3
   41    61        INIT_FCALL                                               'array_keys'
         62        SEND_VAR                                                 !0
         63        DO_ICALL                                         $26     
         64        ASSIGN                                                   !1, $26
   42    65        INIT_FCALL                                               'array_values'
         66        SEND_VAR                                                 !0
         67        DO_ICALL                                         $28     
         68        ASSIGN                                                   !2, $28
   43    69        INIT_FCALL                                               'array_multisort'
         70        SEND_REF                                                 !2
         71        SEND_VAL                                                 3
         72        SEND_REF                                                 !1
         73        SEND_VAL                                                 4
         74        DO_ICALL                                                 
   44    75        INIT_FCALL                                               'array_combine'
         76        SEND_VAR                                                 !1
         77        SEND_VAR                                                 !2
         78        DO_ICALL                                         $31     
         79        ASSIGN                                                   !0, $31
   46    80        ECHO                                                     'If+numerical+keys+are+important%2C+the+slightly+less+elegant+solution+will+work%3A%0D%0A'
   47    81        INIT_FCALL                                               'var_dump'
         82        SEND_VAR                                                 !0
         83        DO_ICALL                                                 
         84      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
173.77 ms | 1404 KiB | 23 Q