Czy ktoś może uprzejmie dostarczyć kod do utworzenia tablicy z pliku CSV przy użyciu fgetcsv?
Użyłem następującego kodu, aby utworzyć tablicę z prostego pliku CSV, ale nie działa poprawnie, gdy jedno z moich pól zawiera wiele przecinków - na przykład adresy.
$lines =file('CSV Address.csv');
foreach($lines as $data)
{
list($name[],$address[],$status[])
= explode(',',$data);
}
* Ponadto moja usługa hostingowa nie obsługuje str_getcsv.
Powyższy kod nie działa z następującym przykładem pliku CSV. Pierwsza kolumna to nazwisko, druga adres, trzecia to stan cywilny.
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
Odpowiedzi:
Jak powiedziałeś w swoim tytule, fgetcsv jest drogą do zrobienia. Jest bardzo łatwy w użyciu.
Będziesz chciał umieścić tam więcej sprawdzania błędów na wypadek
fopen()
niepowodzenia, ale to działa, aby odczytać plik CSV wiersz po wierszu i przeanalizować wiersz do tablicy.źródło
list($names[], $addresses[], $statuses[]) = $line;
Myślę, że składnia str_getcsv () jest znacznie czystsza, nie wymaga również przechowywania pliku CSV w systemie plików.
Lub w przypadku rozwiązania linia po linii:
Lub dla rozwiązania linia po linii bez str_getcsv ():
źródło
Stworzyłem funkcję, która skonwertuje ciąg csv na tablicę. Funkcja wie, jak unikać znaków specjalnych i działa ze znakami obudowy lub bez.
Wypróbowałem to z twoją próbką CSV i działa zgodnie z oczekiwaniami!
źródło
źródło
Stare pytanie, ale nadal aktualne dla użytkowników PHP 5.2. str_getcsv jest dostępny od PHP 5.3. Napisałem małą funkcję, która działa z samym fgetcsv.
Poniżej moja funkcja z https://gist.github.com/4152628 :
Zwroty
Rozpocznij czytanie CSV
źródło
Spróbuj tego..
źródło
Ta funkcja zwróci tablicę z wartościami nagłówka jako klucze tablicy.
źródło
Aby uzyskać tablicę z odpowiednimi kluczami, możesz spróbować tego:
źródło
Poniżej znajduje się link do funkcji z @knagode, wzbogaconej o parametr pomijania wierszy. https://gist.github.com/gabrieljenik/47fc38ae47d99868d5b3#file-csv_to_array
źródło
Wymyśliłem ten dość podstawowy kod. Myślę, że może się przydać każdemu.
źródło
Jeśli chcesz, aby każda linia była w tablicy, a każda komórka w linii w tablicy:
źródło
Wypróbuj ten kod:
źródło
źródło
źródło