Os dados na matriz estão sendo substituídos porque você está reatribuindo o valor de
$key
cada vez que é encontrado. O que você quer fazer é criar um array secundário como o
$key
value e empurre nós para essa matriz desta forma, você acaba com o resultado esperado. [
'NM1' => ['...', '...'],
'PR1' => ['...', '...']
]
O código seria,
while (($row = fgetcsv($handle, 1000, ";", "\"", "\n")) !== FALSE) {
$key = array_shift($row);
// Notice the extra []
$data[$key][] = $row;
}
Cada chave agora conterá uma matriz com um nó para cada linha encontrada.