<?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
)
)
preferences:
27.34 ms | 402 KiB | 5 Q