Может ли кто-нибудь любезно предоставить код для создания массива из файла CSV с помощью fgetcsv?
Я использовал следующий код для создания массива из простого CSV-файла, но он не работает правильно, когда в одном из моих полей есть несколько запятых, например адреса.
$lines =file('CSV Address.csv');
foreach($lines as $data)
{
list($name[],$address[],$status[])
= explode(',',$data);
}
* Кроме того, мой хостинг не поддерживает str_getcsv.
Приведенный выше код не работает со следующим примером файла CSV. Первый столбец - имя, второй столбец - адрес, третий столбец - семейное положение.
Scott L. Aranda,"123 Main Street, Bethesda, Maryland 20816",Single
Todd D. Smith,"987 Elm Street, Alexandria, Virginia 22301",Single
Edward M. Grass,"123 Main Street, Bethesda, Maryland 20816",Married
Aaron G. Frantz,"987 Elm Street, Alexandria, Virginia 22301",Married
Ryan V. Turner,"123 Main Street, Bethesda, Maryland 20816",Single
Ответы:
Как вы сказали в заголовке, fgetcsv - это то, что вам нужно. Это чертовски легко использовать.
Вы захотите добавить сюда дополнительную проверку ошибок на случай
fopen()
сбоя, но это работает для чтения файла CSV по строке и синтаксического анализа строки в массив.источник
list($names[], $addresses[], $statuses[]) = $line;
Я думаю, что синтаксис str_getcsv () намного чище, он также не требует хранения CSV в файловой системе.
Или для построчного решения:
Или для построчного решения без str_getcsv ():
источник
Я создал функцию, которая преобразует строку csv в массив. Функция знает, как экранировать специальные символы, и работает с символами вложения или без них.
Я пробовал это с вашим образцом csv, и он работает, как ожидалось!
источник
источник
Старый вопрос, но все еще актуален для пользователей PHP 5.2. str_getcsv доступен с PHP 5.3. Я написал небольшую функцию, которая работает с самим fgetcsv.
Ниже моя функция с https://gist.github.com/4152628 :
Возврат
Начать чтение CSV
источник
Попробуй это..
источник
Эта функция вернет массив со значениями заголовка в виде ключей массива.
источник
Чтобы получить массив с правильными ключами, вы можете попробовать следующее:
источник
Пожалуйста, найдите ссылку на функцию из @knagode, дополненную параметром пропуска строк. https://gist.github.com/gabrieljenik/47fc38ae47d99868d5b3#file-csv_to_array
источник
Я придумал этот довольно простой код. Думаю, это может быть полезно кому угодно.
источник
Если вы хотите, чтобы каждая строка была в массиве, а каждая ячейка в строке в массиве:
источник
Попробуйте этот код:
источник
источник
источник