PHP의 fgetcsv
함수
fgetcsv
함수는 파일 포인터에서 한 줄을 읽어와서 CSV(Comma Separated Values) 형식으로 구분된 데이터를 배열로 반환합니다. CSV 파일을 처리하는데 유용하며, 각 열의 데이터는 쉼표(,)로 구분됩니다. 읽어온 데이터를 배열로 쉽게 처리할 수 있습니다.
fgetcsv
함수의 사용 예시:
$filename = 'data.csv';
$file = fopen($filename, 'r');
if (!$file) {
die("Error opening file");
}
while (($data = fgetcsv($file)) !== false) {
// 데이터 처리
print_r($data);
}
fclose($file);
다른 함수와 함께 사용하는 예시:
feof
함수와 함께 사용하기 (파일의 끝까지 CSV 데이터 읽기):
$filename = 'data.csv';
$file = fopen($filename, 'r');
if (!$file) {
die("Error opening file");
}
while (!feof($file)) {
$data = fgetcsv($file);
// 데이터 처리
print_r($data);
}
fclose($file);
str_getcsv
함수와 함께 사용하기 (문자열에서 CSV 데이터 읽기):
$csvString = "John,Doe,30,New York";
$data = str_getcsv($csvString);
// 데이터 처리
print_r($data);
조건문과 반복문과 함께 사용하는 예시:
$filename = 'data.csv';
$file = fopen($filename, 'r');
if (!$file) {
die("Error opening file");
}
$targetColumnIndex = 2;
$targetValue = "30";
while (($data = fgetcsv($file)) !== false) {
// 특정 열의 데이터와 조건문 비교
if ($data[$targetColumnIndex] === $targetValue) {
// 조건을 만족하는 경우 데이터 처리
print_r($data);
}
}
fclose($file);
성능 향상을 위한 팁:
-
대용량 CSV 파일을 처리할 때는
fgetcsv
함수가 파일을 한 줄씩 읽기 때문에 메모리 사용량이 증가할 수 있습니다. 이 경우,SplFileObject
를 사용하여 메모리 사용을 최적화할 수 있습니다. -
CSV 파일의 인코딩에 주의해야 합니다. 파일이 UTF-8 또는 다른 인코딩으로 작성되어 있는지 확인하고, 필요한 경우
mb_convert_encoding
함수를 사용하여 데이터를 변환할 수 있습니다.
요약:
fgetcsv
함수는 파일 포인터에서 한 줄을 읽어와서 CSV 형식의 데이터를 배열로 반환하는데 사용됩니다. feof
함수와 함께 사용하여 파일의 끝까지 데이터를 읽거나, str_getcsv
함수와 함께 사용하여 문자열에서 CSV 데이터를 읽을 수 있습니다. 조건문과 반복문과 함께 사용하여 특정 조건에 맞는 데이터를 처리하는데 유용합니다. 성능 향상을 위해 SplFileObject
를 고려하거나, CSV 파일의 인코딩에 주의하여 처리해야 합니다.