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 = 63
Branch analysis from position: 16
2 jumps found. (Code = 78) Position 1 = 17, Position 2 = 63
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 = 41, Position 2 = 47
Branch analysis from position: 41
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 47
2 jumps found. (Code = 43) Position 1 = 52, Position 2 = 54
Branch analysis from position: 52
1 jumps found. (Code = 42) Position 1 = 16
Branch analysis from position: 16
Branch analysis from position: 54
Branch analysis from position: 63
2 jumps found. (Code = 77) Position 1 = 69, Position 2 = 72
Branch analysis from position: 69
2 jumps found. (Code = 78) Position 1 = 70, Position 2 = 72
Branch analysis from position: 70
1 jumps found. (Code = 42) Position 1 = 69
Branch analysis from position: 69
Branch analysis from position: 72
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 72
Branch analysis from position: 63
filename:       /in/QhELg
function name:  (null)
number of ops:  75
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, ->63
         16    > > FE_FETCH_R                                       ~17     $16, !3, ->63
         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        BOOL_NOT                                         ~29     $28
         40      > JMPZ                                                     ~29, ->47
   27    41    >   NEW                                              $30     'Exception'
         42        NOP                                                      
         43        FAST_CONCAT                                      ~31     'invalid+data+in+%27sleepingbags%27+field+for+location+', !6
         44        SEND_VAL_EX                                              ~31
         45        DO_FCALL                                      0          
         46      > THROW                                         0          $30
   30    47    >   FETCH_DIM_R                                      ~33     !5, 'location'
         48        ASSIGN                                                   !6, ~33
   32    49        ARRAY_KEY_EXISTS                                 ~35     !6, !2
         50        BOOL_NOT                                         ~36     ~35
         51      > JMPZ                                                     ~36, ->54
   33    52    >   ASSIGN_DIM                                               !2, !6
         53        OP_DATA                                                  <array>
   36    54    >   FETCH_DIM_R                                      ~40     !5, 'blankets'
         55        FETCH_DIM_RW                                     $38     !2, !6
         56        ASSIGN_DIM_OP                +=               1          $38, 'blankets'
         57        OP_DATA                                                  ~40
   37    58        FETCH_DIM_R                                      ~43     !5, 'sleepingbags'
         59        FETCH_DIM_RW                                     $41     !2, !6
         60        ASSIGN_DIM_OP                +=               1          $41, 'sleepingbags'
         61        OP_DATA                                                  ~43
   16    62      > JMP                                                      ->16
         63    >   FE_FREE                                                  $16
   40    64        INIT_FCALL                                               'arsort'
         65        SEND_REF                                                 !2
         66        DO_ICALL                                         $44     
         67        ASSIGN                                                   !7, $44
   42    68      > FE_RESET_R                                       $46     !7, ->72
         69    > > FE_FETCH_R                                               $46, !8, ->72
   44    70    >   ECHO                                                     !8
   42    71      > JMP                                                      ->69
         72    >   FE_FREE                                                  $46
   48    73        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    74      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
174 ms | 1404 KiB | 19 Q