Čtení a načítání souboru CSV do pole v jazyce PHP

Jak načíst soubor CSV do pole v jazyce PHP Soubory CSV (Comma-Separated Values) jsou jedním z nejběžnějších způsobů výměny dat mezi aplikacemi. Jsou lehké, čitelné pro člověka a s...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

02. 10. 2025

Čtení a načítání souboru CSV do pole v jazyce PHP

Jak načíst soubor CSV do pole v jazyce PHP

Soubory CSV (Comma-Separated Values) jsou jedním z nejběžnějších způsobů výměny dat mezi aplikacemi. Jsou lehké, čitelné pro člověka a snadno se s nimi pracuje v jazyce PHP. Ať už importujete data z aplikace Excel, zpracováváte hromadné odesílání dat nebo vytváříte nástroj pro vytváření zpráv, znalost toho, jak je načtení souboru CSV do pole v PHP je nezbytnou dovedností.

V této příručce se budeme zabývat různými přístupy k načtení souboru CSV do pole v PHP pomocí vestavěných funkcí a vlastní logiky. Na konci kurzu budete jasně vědět, kdy použít jednotlivé metody a jak řešit reálné situace, jako jsou záhlaví, oddělovače a velké soubory.

Co je soubor CSV?

Soubor CSV uchovává tabulková data v prostém textu. Každý řádek představuje záznam a sloupce jsou odděleny oddělovačem (obvykle čárkou, ale někdy i středníkem nebo tabulátorem).

Příklad data.csv:

id,name,email
1,John Doe,john@example.com
2,Jane Smith,jane@example.com
3,Bob Lee,bob@example.com

Naším cílem je přečíst tento soubor v jazyce PHP a převést jej na pole pro snadné zpracování.

Metoda 1: Použití fgetcsv() (Klasický přístup)

Na stránkách nejběžnější způsob čtení souboru CSV do pole v PHP je s vestavěným fgetcsv() funkce. Tato funkce čte jeden řádek souboru najednou a automaticky jej analyzuje do pole.

<?php
$csvFile = fopen("data.csv", "r");
$data = [];
 
while (($row = fgetcsv($csvFile)) !== false) {
$data[] = $row;
}
 
fclose($csvFile);
 
print_r($data);

Výstup:

Array
(
[0] => Array ( [0] => id [1] => name [2] => email )
[1] => Array ( [0] => 1 [1] => John Doe [2] => john@example.com )
[2] => Array ( [0] => 2 [1] => Jane Smith [2] => jane@example.com )
[3] => Array ( [0] => 3 [1] => Bob Lee [2] => bob@example.com )
)

Tato metoda je šetrná k paměti, protože čte řádek po řádku. Je ideální pro velké soubory CSV.

Metoda 2: Převod řádků na asociativní pole

Často nechcete, aby číselné klávesy ([0], [1], [2]). Místo toho chcete, aby hlavičky (id, name, email) jako klíče pole. Postup je následující:

<?php
$csvFile = fopen("data.csv", "r");
 
// First row as headers
$headers = fgetcsv($csvFile);
$data = [];
 
while (($row = fgetcsv($csvFile)) !== false) {
$data[] = array_combine($headers, $row);
}
 
fclose($csvFile);
 
print_r($data);

Výstup:

Array
(
[0] => Array ( [id] => 1 [name] => John Doe [email] => john@example.com )
[1] => Array ( [id] => 2 [name] => Jane Smith [email] => jane@example.com )
[2] => Array ( [id] => 3 [name] => Bob Lee [email] => bob@example.com )
)

S tímto formátem se mnohem lépe pracuje při přístupu k datům podle názvů sloupců.

Metoda 3: Použití file() s str_getcsv()

Další způsob, jak PHP načte soubor CSV do pole kombinuje file() s str_getcsv(). Ten přečte celý soubor do pole řetězců a poté analyzuje jednotlivé řádky.

<?php
$rows = array_map('str_getcsv', file('data.csv'));
print_r($rows);

Tento přístup je velmi kompaktní, ale načítá celý soubor do paměti najednou. Funguje skvěle pro malé až středně velké soubory CSV, ale měl by se vyhnout velmi velkým souborům dat.

Metoda 4: Obsluha vlastních oddělovačů

Ne všechny soubory CSV používají čárky. Někdy se používají středníky (;), karty (\t), nebo dokonce potrubí (|).

Můžete říct. fgetcsv() jaký oddělovač očekávat:

<?php
$csvFile = fopen("data_semicolon.csv", "r");
$data = [];
 
while (($row = fgetcsv($csvFile, 1000, ";")) !== false) {
$data[] = $row;
}
 
fclose($csvFile);
 
print_r($data);

Tato flexibilita umožňuje fgetcsv() velmi silný.

Metoda 5: Vynechávání prázdných řádků a ořezávání dat

Soubory CSV jsou v reálném světě často nepřehledné. Můžete najít prázdné řádky, mezery navíc nebo neúplné řádky. Zde je návod, jak s nimi zacházet:

<?php
$csvFile = fopen("data.csv", "r");
$data = [];
 
while (($row = fgetcsv($csvFile)) !== false) {
// Skip empty lines
if (count($row) == 1 && $row[0] === null) {
continue;
}
// Trim spaces
$row = array_map('trim', $row);
$data[] = $row;
}
 
fclose($csvFile);

Metoda 6: Efektivní čtení velkých souborů CSV

Při práci s obrovskými soubory (stovky MB) může načtení všeho najednou do pole vyčerpat paměť. Místo toho zpracovávejte řádky při jejich čtení:

<?php
$csvFile = fopen("bigfile.csv", "r");
 
// Process each row immediately
while (($row = fgetcsv($csvFile)) !== false) {
// For example, insert into a database
// insertIntoDatabase($row);
}
 
fclose($csvFile);

Tímto způsobem nikdy neuchováváte celou sadu dat v paměti.

Bonus: Převod CSV na funkci vícerozměrného pole

Zde je opakovaně použitelná funkce načtení souboru CSV do pole v PHP s možnostmi pro záhlaví a oddělovače:

<?php
function csvToArray($filename, $delimiter = ",", $hasHeader = true) {
if (!file_exists($filename) || !is_readable($filename)) {
return false;
}
 
$data = [];
if (($handle = fopen($filename, "r")) !== false) {
$headers = $hasHeader ? fgetcsv($handle, 1000, $delimiter) : [];
 
while (($row = fgetcsv($handle, 1000, $delimiter)) !== false) {
if ($hasHeader) {
$data[] = array_combine($headers, $row);
} else {
$data[] = $row;
}
}
fclose($handle);
}
return $data;
}
 
// Usage
print_r(csvToArray("data.csv"));

Závěr

Čtení souboru CSV do pole v jazyce PHP je jednoduché, ale správný přístup závisí na případu použití:

  • Použijte fgetcsv() pro většinu scénářů (čtení po řádcích).
  • Použijte array_combine() pokud chcete asociativní pole se záhlavími.
  • Použijte file() s str_getcsv() pro malé soubory, když chcete mít stručný kód.
  • Pro velmi velké soubory použijte streamování (zpracování řádků tak, jak přicházejí).

Původní článek publikoval Nabil Hassen.

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google