3v4l.org

run code in 300+ PHP versions simultaneously
<?php $fieldNames = [ 'id', 'location', 'blankets', 'sleepingbags' ]; $file = new \SplFileObject( 'collections2.csv', 'rb' ); $file->setCsvControl( ",", "\"", "\\" ); $file->setFlags( \SplFileObject::READ_CSV ); $sumBlankets = []; foreach ( $file as $i => $line ) { $row = array_combine( $fieldNames, $line ); if ( !is_numeric( $row['blankets'] ) ) { throw new Exception("invalid data in 'blankets' field for location $k"); } if ( is_numeric( $row['sleepingbags'] ) ) { throw new Exception("invalid data in 'sleepingbags' field for location $k"); } $k = $row['location']; if ( !array_key_exists( $k, $sumBlankets ) ) { $sumBlankets[$k] = [ 'blankets' => 0, 'sleepingbags' => 0 ]; } $sumBlankets[$k]['blankets'] += $row['blankets']; $sumBlankets[$k]['sleepingbags'] += $row['sleepingbags']; } $sorted = arsort( $sumBlankets ); foreach ( $sorted as $location ) { echo $location; } ?> $sumBlankets outputs Array ( [Location] => Array ( [blankets] => 0 [sleepingbags] => 0 ) [A Capella Salon] => Array ( [blankets] => 11 [sleepingbags] => 0 ) [Allegan Library] => Array ( [blankets] => 47 [sleepingbags] => 2 ) [Avente] => Array ( [blankets] => 2 [sleepingbags] => 0 ) [Biggby - Paw Paw ] => Array ( [blankets] => 13 [sleepingbags] => 1 ) [Biggby - Plainwell] => Array ( [blankets] => 28 [sleepingbags] => 3 ) [Biggby - Sprinkle] => Array ( [blankets] => 25 [sleepingbags] => 0 ) [Biggby - West Main] => Array ( [blankets] => 10 [sleepingbags] => 0 ) [Biggby - Westnedge 311] => Array ( [blankets] => 9 [sleepingbags] => 0 ) [Biggby - Westnedge BestBuy] => Array ( [blankets] => 4 [sleepingbags] => 0 ) [Biggby - Williamston] => Array ( [blankets] => 27 [sleepingbags] => 10 ) )
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 16, Position 2 = 62
Branch analysis from position: 16
2 jumps found. (Code = 78) Position 1 = 17, Position 2 = 62
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 35
Branch analysis from position: 29
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 40, Position 2 = 46
Branch analysis from position: 40
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 46
2 jumps found. (Code = 43) Position 1 = 51, Position 2 = 53
Branch analysis from position: 51
1 jumps found. (Code = 42) Position 1 = 16
Branch analysis from position: 16
Branch analysis from position: 53
Branch analysis from position: 62
2 jumps found. (Code = 77) Position 1 = 68, Position 2 = 71
Branch analysis from position: 68
2 jumps found. (Code = 78) Position 1 = 69, Position 2 = 71
Branch analysis from position: 69
1 jumps found. (Code = 42) Position 1 = 68
Branch analysis from position: 68
Branch analysis from position: 71
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 71
Branch analysis from position: 62
filename:       /in/qmisW
function name:  (null)
number of ops:  74
compiled vars:  !0 = $fieldNames, !1 = $file, !2 = $sumBlankets, !3 = $line, !4 = $i, !5 = $row, !6 = $k, !7 = $sorted, !8 = $location
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
   10     1        NEW                                              $10     'SplFileObject'
          2        SEND_VAL_EX                                              'collections2.csv'
          3        SEND_VAL_EX                                              'rb'
          4        DO_FCALL                                      0          
          5        ASSIGN                                                   !1, $10
   11     6        INIT_METHOD_CALL                                         !1, 'setCsvControl'
          7        SEND_VAL_EX                                              '%2C'
          8        SEND_VAL_EX                                              '%22'
          9        SEND_VAL_EX                                              '%5C'
         10        DO_FCALL                                      0          
   12    11        INIT_METHOD_CALL                                         !1, 'setFlags'
         12        SEND_VAL_EX                                              8
         13        DO_FCALL                                      0          
   14    14        ASSIGN                                                   !2, <array>
   16    15      > FE_RESET_R                                       $16     !1, ->62
         16    > > FE_FETCH_R                                       ~17     $16, !3, ->62
         17    >   ASSIGN                                                   !4, ~17
   18    18        INIT_FCALL                                               'array_combine'
         19        SEND_VAR                                                 !0
         20        SEND_VAR                                                 !3
         21        DO_ICALL                                         $19     
         22        ASSIGN                                                   !5, $19
   20    23        INIT_FCALL                                               'is_numeric'
         24        FETCH_DIM_R                                      ~21     !5, 'blankets'
         25        SEND_VAL                                                 ~21
         26        DO_ICALL                                         $22     
         27        BOOL_NOT                                         ~23     $22
         28      > JMPZ                                                     ~23, ->35
   22    29    >   NEW                                              $24     'Exception'
         30        NOP                                                      
         31        FAST_CONCAT                                      ~25     'invalid+data+in+%27blankets%27+field+for+location+', !6
         32        SEND_VAL_EX                                              ~25
         33        DO_FCALL                                      0          
         34      > THROW                                         0          $24
   25    35    >   INIT_FCALL                                               'is_numeric'
         36        FETCH_DIM_R                                      ~27     !5, 'sleepingbags'
         37        SEND_VAL                                                 ~27
         38        DO_ICALL                                         $28     
         39      > JMPZ                                                     $28, ->46
   27    40    >   NEW                                              $29     'Exception'
         41        NOP                                                      
         42        FAST_CONCAT                                      ~30     'invalid+data+in+%27sleepingbags%27+field+for+location+', !6
         43        SEND_VAL_EX                                              ~30
         44        DO_FCALL                                      0          
         45      > THROW                                         0          $29
   30    46    >   FETCH_DIM_R                                      ~32     !5, 'location'
         47        ASSIGN                                                   !6, ~32
   32    48        ARRAY_KEY_EXISTS                                 ~34     !6, !2
         49        BOOL_NOT                                         ~35     ~34
         50      > JMPZ                                                     ~35, ->53
   33    51    >   ASSIGN_DIM                                               !2, !6
         52        OP_DATA                                                  <array>
   36    53    >   FETCH_DIM_R                                      ~39     !5, 'blankets'
         54        FETCH_DIM_RW                                     $37     !2, !6
         55        ASSIGN_DIM_OP                +=               1          $37, 'blankets'
         56        OP_DATA                                                  ~39
   37    57        FETCH_DIM_R                                      ~42     !5, 'sleepingbags'
         58        FETCH_DIM_RW                                     $40     !2, !6
         59        ASSIGN_DIM_OP                +=               1          $40, 'sleepingbags'
         60        OP_DATA                                                  ~42
   16    61      > JMP                                                      ->16
         62    >   FE_FREE                                                  $16
   40    63        INIT_FCALL                                               'arsort'
         64        SEND_REF                                                 !2
         65        DO_ICALL                                         $43     
         66        ASSIGN                                                   !7, $43
   42    67      > FE_RESET_R                                       $45     !7, ->71
         68    > > FE_FETCH_R                                               $45, !8, ->71
   44    69    >   ECHO                                                     !8
   42    70      > JMP                                                      ->68
         71    >   FE_FREE                                                  $45
   48    72        ECHO                                                     '%0A%24sumBlankets+outputs%0AArray%0A%28%0A++++%5BLocation%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+0%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+0%0A++++++++%29%0A%0A++++%5BA+Capella+Salon%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+11%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+0%0A++++++++%29%0A%0A++++%5BAllegan+Library%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+47%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+2%0A++++++++%29%0A%0A++++%5BAvente%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+2%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+0%0A++++++++%29%0A%0A++++%5BBiggby+-+Paw+Paw+%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+13%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+1%0A++++++++%29%0A%0A++++%5BBiggby+-+Plainwell%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+28%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+3%0A++++++++%29%0A%0A++++%5BBiggby+-+Sprinkle%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+25%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+0%0A++++++++%29%0A%0A++++%5BBiggby+-+West+Main%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+10%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+0%0A++++++++%29%0A%0A++++%5BBiggby+-+Westnedge+311%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+9%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+0%0A++++++++%29%0A%0A++++%5BBiggby+-+Westnedge+BestBuy%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+4%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+0%0A++++++++%29%0A%0A++++%5BBiggby+-+Williamston%5D+%3D%3E+Array%0A++++++++%28%0A++++++++++++%5Bblankets%5D+%3D%3E+27%0A++++++++++++%5Bsleepingbags%5D+%3D%3E+10%0A++++++++%29%0A%29'
  117    73      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
183.57 ms | 1409 KiB | 19 Q