Используйте fopen
и fgetcsv
. Для этого вам необходимо сначала написать функцию для извлечения данных из CSV и сохранения их в переменной, нижеприведенная функция сделает это, используя fopen
.
Сначала вам понадобится функция для чтения CSV:
function utf8_fopen_read($fileName) {
$fc = iconv('windows-1250', 'utf-8//IGNORE', file_get_contents($fileName));
$handle = fopen("php://memory", "rw");
fwrite($handle, $fc);
fseek($handle, 0);
return $handle;
}
Как только вы Сделав это, вы захотите манипулировать данными, которые вы только что получили, чтобы вы могли создать многомерный массив результатов, заполнив данные в ассоциативные ключи, как вы описали в своем вопросе.
Теперь мы собираемся вызвать функцию выше и сохранить результаты в $data
, используя while
l oop, мы собираемся перебрать весь CSV и сохранить всю информацию в $people
строка за строкой.
Заполнение массива:
$people = [];
if(($handle = utf8_fopen_read('path/to/csv.csv')) !== FALSE) {
while(($data = fgetcsv($handle, 0, ',')) !== FALSE) {
$people[$i] = [];
for($c = 0; $c < count($data); $c++) {
$info = $data[$c];
if($i == 0) $fields[$c] = str_replace(' ', '', $info);
if($i > 0) $people[$ii][$fields[$c]] = $info;
}
if($i > 0) $ii++;
$i++;
}
fclose($handle);
}