Cách đọc CSV thành mảng trong PHP – PHP

Có nhiều cách để đọc tệp CSV vào một mảng. Các công cụ được lưu trữ trực tuyến cung cấp các giao diện để thực hiện việc này. Ngoài ra, rất dễ dàng tạo giao diện người dùng tùy chỉnh cho mục đích đọc CSV vào mảng.

Trong PHP, nó có nhiều hơn một hàm riêng để đọc dữ liệu CSV.

  • fgetcsv () – Nó đọc con trỏ tệp CSV và đọc dòng cụ thể tới trình xử lý tệp.
  • str_getcsv () -Nó đọc chuỗi CSV đầu vào thành một mảng.

Bài viết này cung cấp các cách thay thế để đọc tệp CSV sang mảng PHP. Ngoài ra, nó cho thấy cách chuẩn bị HTML từ dữ liệu mảng của CSV đầu vào.

Ví dụ nhanh

Ví dụ này đọc một tệp CSV đầu vào bằng cách sử dụng hàm PHP fgetcsv (). Hàm này cần điểm tệp để tham chiếu đến dòng để đọc các cột hàng CSV.

<?php

// PHP function to read CSV to array
function csvToArray($csv)
{
    // create file handle to read CSV file
    $csvToRead = fopen($csv, 'r');

    // read CSV file using comma as delimiter
    while (! feof($csvToRead)) {
        $csvArray[] = fgetcsv($csvToRead, 1000, ',');
    }

    fclose($csvToRead);
    return $csvArray;
}

// CSV file to read into an Array
$csvFile="csv-to-read.csv";
$csvArray = csvToArray($csvFile);

echo '<pre>';
print_r($csvArray);
echo '</pre>';
?>

Chương trình này đặt tham chiếu luồng tệp CSV và các tham số khác để đọc các bản ghi trong một vòng lặp.

Phép lặp vòng lặp đẩy dữ liệu dòng vào một mảng. Việc đẩy mảng PHP xảy ra bằng cách sử dụng một trong các phương pháp mà chúng ta đã thấy trong bài viết được liên kết.

Lưu các giá trị được phân tách bằng dấu phẩy dưới đây vào tệp csv-to-array.csv. Nó phải được tạo như một đầu vào của chương trình trên.

csv-to-array.csv

Lion,7,Wild
Tiger,9,Wild
Dog,4,Domestic

Đầu ra:

Chương trình trên trả về mảng sau sau khi đọc dữ liệu tệp CSV đầu vào.

Array
(
    [0] => Array
        (
            [0] => Lion
            [1] => 7
            [2] => Wild
        )

    [1] => Array
        (
            [0] => Tiger
            [1] => 9
            [2] => Wild
        )

    [2] => Array
        (
            [0] => Dog
            [1] => 4
            [2] => Domestic
        )

)

csv sang mảng PHP

Ánh xạ str_getcsv () để đọc CSV và chuyển đổi nó thành một mảng PHP

Chương trình này sẽ phù hợp nếu bạn muốn bỏ qua bước viết vòng lặp. Nó tiết kiệm công sức của nhà phát triển. Nhưng xử lý nền sẽ giống như chương trình trên.

Tệp PHP () chuyển đổi toàn bộ CSV thành một mảng. Sau đó, array_map đặt hàm str_getcsv () như một lệnh gọi lại để lặp lại mảng các hàng tệp CSV.

Str_getcsv () nhập dữ liệu hàng CSV vào một mảng. Trong bài viết trước, chúng ta đã biết về việc xử lý việc đọc tệp CSV và các hoạt động khác như nhập và xuất.

Biến $ csvArray kết quả sẽ chứa dữ liệu CSV hoàn chỉnh trong một mảng nhiều chiều.

Đầu ra của chương trình này sẽ tương tự như trong ví dụ nhanh.

<?php
// a one-line simple option to reade CSV to array
// it uses PHP str_getcsv
$csvArray = array_map('str_getcsv', file('csv-to-read.csv'));
echo '<pre>';
print_r($csvArray);
echo '</pre>';
?>

Chuyển đổi CSV sang Mảng và sau đó chuyển đổi mảng sang HTML

Ví dụ này sẽ hữu ích nếu bạn muốn hiển thị nội dung CSV trong giao diện người dùng ở dạng bảng.

Hầu hết, mã này phải hữu ích hơn vì nó có khả năng sử dụng nó trong các dự án thời gian thực. Tuy nhiên, các ví dụ khác là những điều cơ bản cũng rất quan trọng để tìm hiểu về cách đọc CSV bằng PHP.

Mã này lặp lại hàng CSV và đọc dữ liệu cột bằng cách sử dụng fgetcsv () như đã làm trong ví dụ nhanh.

Sau đó, nó tạo cấu trúc bảng HTML bằng cách sử dụng dữ liệu mảng CSV. Trong hướng dẫn trước, chúng ta đã thấy mã để chuyển đổi bảng HTML thành excel.

<?php

// PHP script to read CSV and convert to HTML table

// create file handle to read CSV file
$csvFile = fopen('csv-to-read.csv', 'r');

if ($csvFile !== FALSE) {
    echo "<table border=1 cellpadding=10>";
    while (($csvArray = fgetcsv($csvFile, 100, ',')) !== FALSE) {
        echo "<tr>";
        for ($i = 0; $i < count($csvArray); $i ++) {
            echo "<td>" . $csvArray[$i] . "</td>";
        }
        echo "</tr>";
    }
    echo "</table>";
    fclose($csvFile);
}
?>

Đầu ra:

Chương trình này sẽ hiển thị bảng HTML trên màn hình. Dữ liệu hàng là từ tệp CSV đầu vào.

csv sang html
Tải xuống

↑ Quay lại đầu trang

Trả lời