Прежде всего, вы, кажется, предполагаете, что ваш CSV-файл упорядочен по столбцу, по которому вы хотите сгруппировать. Если это не так, то сначала вы должны прочитать файл, отсортировать его, а затем распечатать. Если ваш CSV-файл не слишком велик для памяти вашего сервера, это должно сработать.
Кроме того, ваш код имеет повторы и сохраняет весь файл в массив (на самом деле, как я и предлагал выше, но я не знаю, является ли он намеренным). попробуйте что-то вроде этого:
Это мой demo.csv:
"Banana", "yellow"
"Lemon", "yellow"
"Orange", "orange"
"Strawberry", "red"
"Tomato", "red"
Это PHP, чтобы пройти через него и перечислить его по цвету:
<?php
if (($handle = fopen('demo.csv', "r"))) {
$prev = false;
while (($data = fgetcsv($handle, 1000, ","))) {
if ($prev !== $data[1]) {
$prev = $data[1];
echo '<p><b>' . $prev . '</b></p>';
}
echo $data[0] . '<br>';
}
}
fclose($handle);
?>
Это вывод в HTML (я добавил несколько разрывов строк для правильного отображения здесь)
<p><b>yellow</b></p>
Banana<br>
Lemon<br>
<p><b>orange</b></p>
Orange<br>
<p><b>red</b></p>
Strawberry<br>
Tomato<br>
(Если CSV не был сгруппирован по цвету, вам нужен другой подход.)