PHP:
การทำงานกับ CSV

วิธีการ:

PHP มีฟังก์ชันต่างๆ ในตัวสำหรับการจัดการกับไฟล์ CSV, ทำให้การอ่านและเขียนไฟล์เหล่านี้เป็นเรื่องง่ายโดยไม่จำเป็นต้องใช้ไลบรารีของบุคคลที่สาม นี่คือตัวอย่างเบื้องต้นในการเริ่มต้น:

การอ่านไฟล์ CSV

คุณสามารถเปิดไฟล์ CSV และอ่านเนื้อหาของมันโดยใช้ fopen() ร่วมกับ fgetcsv():

<?php
$filename = 'data.csv';
$handle = fopen($filename, "r");
if ($handle !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "จำนวนฟิลด์ในบรรทัด: $num\n";
        for ($c = 0; $c < $num; $c++) {
            echo $data[$c] . "\n";
        }
    }
    fclose($handle);
}
?>

สคริปต์นี้จะพิมพ์จำนวนฟิลด์ในแต่ละบรรทัดตามด้วยเนื้อหาของแต่ละฟิลด์

การเขียนลงไฟล์ CSV

เพื่อเขียนข้อมูลลงไฟล์ CSV, ใช้ fopen() ในโหมดเขียน (w) และ fputcsv():

<?php
$list = [
    ['ID', 'Name', 'Email'],
    [1, 'John Doe', '[email protected]'],
    [2, 'Jane Doe', '[email protected]']
];

$handle = fopen('users.csv', 'w');

foreach ($list as $row) {
    fputcsv($handle, $row);
}

fclose($handle);
?>

สคริปต์นี้สร้างไฟล์ชื่อ users.csv และเขียนหัวข้อและสองแถวข้อมูลลงไปในนั้น

การใช้ไลบรารี: League\Csv

สำหรับการจัดการ CSV ที่ซับซ้อนกว่า, League\Csv ไลบรารีเสนอชุดคุณลักษณะที่มั่นคง หลังจากติดตั้งมันผ่าน Composer (composer require league/csv), คุณสามารถใช้มันอ่านและเขียนข้อมูล CSV ได้อย่างยืดหยุ่นมากขึ้น

การอ่านด้วย League\Csv

<?php
require 'vendor/autoload.php';

use League\Csv\Reader;

$csv = Reader::createFromPath('data.csv', 'r');
$csv->setHeaderOffset(0); // ตั้งค่าหากคุณต้องการใช้บรรทัดแรกเป็นส่วนหัว

$results = $csv->getRecords();
foreach ($results as $row) {
    print_r($row);
}
?>

สคริปต์นี้อ่าน data.csv, ถือว่าแถวแรกเป็นส่วนหัวของคอลัมน์และพิมพ์แต่ละแถวเป็นอาร์เรย์แบบเชื่อมโยง

เขียนด้วย League\Csv

<?php
require 'vendor/autoload.php';

use League\Csv\Writer;

$csv = Writer::createFromPath('users_new.csv', 'w+');

$csv->insertOne(['ID', 'Name', 'Email']);
$csv->insertAll([
    [3, 'Alex Doe', '[email protected]'],
    [4, 'Anna Smith', '[email protected]']
]);

echo "เขียนลง users_new.csv สำเร็จแล้ว.";
?>

นี่สร้าง users_new.csv และเขียนหัวข้อแถวตามด้วยสองแถวข้อมูล