Alguém pode gentilmente fornecer um código para criar uma matriz a partir de um arquivo CSV usando fgetcsv?
Usei o código a seguir para criar uma matriz a partir de um arquivo CSV simples, mas ele não funciona direito quando um dos meus campos tem várias vírgulas - como endereços.
$lines =file('CSV Address.csv');
foreach($lines as $data)
{
list($name[],$address[],$status[])
= explode(',',$data);
}
* Além disso, str_getcsv não é compatível com meu serviço de hospedagem.
O código acima não funciona com o seguinte exemplo de arquivo CSV. A primeira coluna é o nome, a segunda coluna é o endereço, a terceira coluna é o estado civil.
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
Respostas:
Como você disse no título, fgetcsv é o caminho a percorrer. É muito fácil de usar.
Você vai querer colocar mais verificação de erro lá no caso de
fopen()
falha, mas isso funciona para ler um arquivo CSV linha por linha e analisar a linha em um array.fonte
list($names[], $addresses[], $statuses[]) = $line;
Acho que a sintaxe str_getcsv () é muito mais limpa, também não requer que o CSV seja armazenado no sistema de arquivos.
Ou para uma solução linha a linha:
Ou para uma solução linha por linha sem str_getcsv ():
fonte
Eu criei uma função que irá converter uma string csv em uma matriz. A função sabe como escapar caracteres especiais e funciona com ou sem caracteres de inclusão.
Eu tentei com sua amostra csv e funcionou conforme o esperado!
fonte
fonte
Pergunta antiga, mas ainda relevante para usuários de PHP 5.2. str_getcsv está disponível no PHP 5.3. Escrevi uma pequena função que funciona com o próprio fgetcsv.
Abaixo está minha função em https://gist.github.com/4152628 :
Devoluções
Comece a ler CSV
fonte
Experimente isso ..
fonte
Esta função retornará array com valores de cabeçalho como chaves de array.
fonte
Para obter uma matriz com as chaves certas, você pode tentar isto:
fonte
Por favor, encontre abaixo um link para a função de @knagode, aprimorado com um parâmetro de pular linhas. https://gist.github.com/gabrieljenik/47fc38ae47d99868d5b3#file-csv_to_array
fonte
Eu vim com esse código bem básico. Acho que pode ser útil para qualquer pessoa.
fonte
Se você quiser que cada linha esteja em uma matriz e cada célula da linha em uma matriz:
fonte
Experimente este código:
fonte
fonte
fonte