Данные в файлах CSV разделены ровно одним разделителем. Отображаемые данные должны быть в этом формате, чтобы их можно было правильно прочитать. Я использовал один пробел для january.csv.
Поставщики хранятся в массиве.
$filename = "january.csv";
$base = "suppliers.csv";
$suppliers = [];
$file = fopen($base, 'r');
while (($line = fgetcsv($file)) !== FALSE) {
$suppliers[] = $line[0];
}
fclose($file);
Затем можно выполнить проверку поставщиков и группировку / суммирование для дальнейшего oop.
$file = fopen($filename, 'r');
$sum = [];
while (($row = fgetcsv($file,0," ")) !== FALSE) {
$name = $row[1];
if(in_array($name,$suppliers)){
if(!array_key_exists($name,$sum)) $sum[$name] = 0.0;
$sum[$name] += $row[2];
}
}
fclose($file);
//Output Result
var_export($sum);
Результат:
array (
'Marilyn' => 32140.58,
'Nancy' => 45000.0,
'John' => 1570.29,
)
array_sum () может использоваться для всех поставщиков:
$total = array_sum($groups);