Как вывести импорт CSV в ассоциативный массив и автоматически называть ключи?

У меня есть CSV-файл, где в первой строке отображается название каждой строки. Это имя должно быть ключом для ассоциативного массива. В настоящее время я загружаю это вручную, и если порядок строк изменится, это нарушит функциональность.

Как я могу получить имена из строки 1 и создать из нее ключи?

$csv = array();
$index = 0;
while ($row = fgetcsv($fp)) {
if ($row[0] == NULL)
continue;
else{
$index++;
foreach($row as $csvdata){
list(
$csv[$index]['column 1 name'],
$csv[$index]['column 2 name']
)
= explode(';',$csvdata);
}
}
}

0

Решение

Попробуйте преобразовать самую первую строку файла, содержащую имена / ключи, в массив. Затем используйте эти ключи для заполнения ассоциированного массива при разборе оставшихся строк.

$keys = array();
$csv = array();
$index = 0;
while ($row = fgetcsv($fp)) {
if ($index == 0) {
$keys = explode(',', $row);
}
else {
$csv[$keys[index-1]] = $row;
}
++$index;
}

В этом ответе предполагается, что вам нужен ассоциированный массив, в котором ключи соответствуют именам в первой строке, а значения соответствуют каждой строке в импорте CSV.

1

Другие решения

Других решений пока нет …