Hướng dẫn php read csv into associative array - php đọc csv vào mảng kết hợp

Tôi đã thấy rất nhiều ví dụ về cách lấy tệp CSV và sau đó tạo một mảng kết hợp với các tiêu đề làm khóa.

Ví dụ:

Brand,Model,Part,Test
Honda,Civic,123,244
Honda,Civic,135,434
Toyota,Supra,511,664

Nơi nó sẽ tạo ra một mảng như Array[$num][$key] trong đó $key sẽ là thương hiệu, mô hình, một phần, thử nghiệm.

Vì vậy, nếu tôi muốn truy cập giá trị thử nghiệm "434", tôi sẽ phải lặp mọi chỉ mục trong mảng và sau đó bỏ qua bất kỳ thương hiệu nào không phải là Honda, và bất kỳ mô hình nào không phải là Civic


Những gì tôi cần làm là truy cập trực tiếp giá trị nhất, thay vì chạy qua một vòng lặp cho mỗi chỉ mục $ num. Tôi muốn có thể truy cập kiểm tra giá trị "434" với:

Array['Honda']['Civic']['135']

hoặc kiểm soát một câu lệnh với vòng lặp qua mọi mô hình mà Honda có ... một cái gì đó giống như

foreach $model in Array['Honda']

Ít nhất tôi cần có khả năng đi qua mọi mô hình được cung cấp một thương hiệu đã biết và truy cập tất cả các thông tin tương đối cho mỗi mô hình.

Edit:

Chỉ để xác nhận tôi đã đặt ra một ví dụ. Dữ liệu thực sự của tôi có các tiêu đề như:

brand model part price shipping description footnote

Trong đó tôi cần truy cập tất cả các thông tin gắn liền với phần (giá, vận chuyển, desc, chú thích)

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

$ lines = explode ("\ n", file_get_contents ('input.csv'));
$ headers = str_getcsv (mảng_shift ($ lines));lines = explode( "\n", file_get_contents( 'input.csv' ) );
$ data = mảng ();headers = str_getcsv( array_shift( $lines ) );
foreach ($ lineas $ line) {data = array();
$ row = mảng (); ( $lines as $line ) {
foreach (str_getcsv ($ line) là $ key => $ trường)row = array();
$ row [$ tiêu đề [$ key]] = $ trường; ( str_getcsv( $line ) as $key => $field )
$ row = mảng_filter ($ row);row[ $headers[ $key ] ] = $field;
$ data [] = $ row;row = array_filter( $row );
}data[] = $row;
Giới thiệu

Giới thiệu

Các tệp hoặc CSV được phân tách bằng dấu phẩy là phổ biến cho dữ liệu lưu trữ sách và tồn tại. Mặc dù các ứng dụng quy mô lớn sử dụng lưu trữ đám mây hoặc cơ sở dữ liệu. Tuy nhiên, điều đó không có nghĩa là CSV đã ra khỏi giải đấu bây giờ. Chúng tôi sử dụng chúng thường xuyên để nhập dữ liệu và duy trì hồ sơ cho các giao dịch đơn giản.

Hướng dẫn php read csv into associative array - php đọc csv vào mảng kết hợp

Một tính năng hữu ích của PHP là làm việc với các tệp CSV. Chúng tôi đã thấy chuyển đổi các mảng kết hợp thành CSV. Trong bài viết này, chúng tôi sẽ thấy cách đọc và chuyển đổi CSV sang mảng liên kết PHP. Khi bạn đã ánh xạ một tệp CSV vào một mảng kết hợp, có thể có một loạt các phép biến đổi dữ liệu. Vì vậy, hãy để Lôi nhảy vào chủ đề chính mà không cần phải quảng cáo thêm.convert CSV to associative array PHP. Once you have mapped a CSV file to an associative array, a range of data transformations could be possible. So, let’s jump into the main topic without further ado.

#1 - & nbsp; Đọc và chuyển đổi CSV thành mảng kết hợp PHP & NBSP;

Tuyên bố miễn trừ trách nhiệm

Cách tiếp cận này sẽ hoạt động trong Php 5> = 5.3.0, Php 7, Php 8. Nếu bạn không sử dụng các phiên bản này, thì có lẽ tùy chọn thứ hai sẽ hoạt động cho bạn.PHP 5 >= 5.3.0, PHP 7, PHP 8. If you’re not using these versions, then perhaps the second option would work for you.

Lời tựa

Ở đây, cách đơn giản nhất để ánh xạ CSV đến các mảng kết hợp trong PHP. Chúng tôi có một tệp CSV với dữ liệu nhân viên. Chúng ta cần chuyển đổi CSV này thành mảng kết hợp PHP.CSV to associative arrays in PHP. We have a CSV file with employees data. We need to convert this CSV to associative array PHP.

Hướng dẫn php read csv into associative array - php đọc csv vào mảng kết hợp

Hãy cùng nhìn vào mã và đầu ra và sau đó phá vỡ dòng chảy để nâng cao sự hiểu biết của nó.

Mã số


Đầu ra

Array
(
    [0] => Array
        (
            [Id] => 1
            [Name] => Anna
            [Age] => 30
            [Salary] => 20000
            [Department] => Finance
        )

    [1] => Array
        (
            [Id] => 2
            [Name] => Adam
            [Age] => 25
            [Salary] => 15000
            [Department] => IT
        )

    [2] => Array
        (
            [Id] => 3
            [Name] => Bob
            [Age] => 32
            [Salary] => 25000
            [Department] => Finance
        )

    [3] => Array
        (
            [Id] => 4
            [Name] => Cara
            [Age] => 20
            [Salary] => 12000
            [Department] => Logistics
        )

    [4] => Array
        (
            [Id] => 5
            [Name] => Daniel
            [Age] => 28
            [Salary] => 27000
            [Department] => Engineering
        )

    [5] => Array
        (
            [Id] => 6
            [Name] => Franklin
            [Age] => 25
            [Salary] => 20000
            [Department] => Quality Assurance
        )

    [6] => Array
        (
            [Id] => 7
            [Name] => Gorge
            [Age] => 21
            [Salary] => 15000
            [Department] => IT
        )

    [7] => Array
        (
            [Id] => 8
            [Name] => Kylie
            [Age] => 20
            [Salary] => 10000
            [Department] => Engineering
        )

    [8] => Array
        (
            [Id] => 9
            [Name] => Ivan
            [Age] => 23
            [Salary] => 12000
            [Department] => Logistics
        )

    [9] => Array
        (
            [Id] => 10
            [Name] => James
            [Age] => 25
            [Salary] => 20000
            [Department] => Quality Assurance
        )

)

Bản đồ từ CSV đến các mảng liên kết trong PHP đã được thực hiện với một vài dòng mã mà chúng tôi sẽ gỡ lỗi ngay bây giờ.CSV to associative arrays in PHP has been done with a few lines of code that we’re going to debunk now.

Phá vỡ

Ở đây, một biểu đồ dòng chảy về cách logic chảy. Chúng ta sẽ thấy tất cả các chức năng này hoạt động như thế nào để hoàn thành nhiệm vụ.

Hướng dẫn php read csv into associative array - php đọc csv vào mảng kết hợp

  1. Hàm Array_Map có chức năng gọi lại STR_GETCSVAND là đối số thứ hai. & NBSP;array_map function gets a callback function str_getcsvand file function as the second argument. 
    • Hàm tệp đọc toàn bộ tệp CSV dưới dạng chuỗi. file function reads the entire CSV file as a string.
    • Hàm mảng_map sử dụng hàm gọi lại str_getcsv để xử lý chuỗi chuỗi từng dòng và chuyển đổi nó thành một mảng.array_map function uses the callback function str_getcsv to process the string line by line and convert it into an array.
  2. & nbsp; Sau bước 1, chúng tôi có một mảng có tất cả các thực thể được phân tách bằng dấu phẩy dưới dạng các giá trị riêng lẻ. Chúng tôi chạy Array_Shift để có được hàng tiêu đề.array_shift to get the header row.
  3. Chúng tôi lặp lại các giá trị mảng còn lại và bằng cách sử dụng Array_Combine, nó ánh xạ từng hàng thành tiêu đề.array_combine, it maps each row to the header.
  4. Cuối cùng, các bản đồ php CSV đến kết hợp như thể hiện trong đầu ra.CSV to associative array PHP maps as shown in the output.

Mã này khá đơn giản để hiểu nếu bạn biết các chức năng này. Bạn nên làm quen với các chức năng này bằng cách tuân theo các liên kết trang tài liệu PHP chính thức.

#2 - & nbsp; Đọc và chuyển đổi CSV thành mảng kết hợp PHP & NBSP;

Chúng tôi sẽ thấy một ví dụ ở đây cũng sẽ chạy tốt như nhau của Php phiên bản 4 và Greater. Ví dụ này sẽ có nhiều mã hơn thông tin trước vì nhiều chức năng mới nhất đã được thay thế bằng các chức năng tương thích và một số phần của mã đã được giảm xuống thành các vòng foreach để hoàn thành nhiệm vụ.


Đầu ra và luồng của mã vẫn giữ nguyên. Vì vậy, chúng tôi đã giành chiến thắng khi giải thích lại toàn bộ. Sự khác biệt ở đây là một số chức năng đã được thay thế bằng mã tương thích hơn. Bạn có thể thử nó để tìm ra nó bằng cách trải qua sự cố trong phần trước.

Sự kết luận

Chúng tôi đã thấy cách đọc và chuyển đổi CSV thành các mảng kết hợp trong PHP. Tùy chọn đầu tiên là đơn giản nhất, nhưng một số chức năng được sử dụng ở đó không tương thích với các phiên bản PHP dưới 5. Vì vậy, tùy chọn thứ hai liên quan đến sự không tương thích và sử dụng các lựa chọn thay thế để giải quyết vấn đề tương thích. Chúng tôi hy vọng bạn đã học được về việc chuyển đổi CSV thành mảng kết hợp PHP.CSV to associative arrays in PHP. The first option is the simplest one, but some functions used there are incompatible with PHP versions less than 5. So, the second option deals with incompatibility and uses alternatives to get around the compatibility issue. We hope you’ve learned about converting CSV to associative array PHP.

Bạn muốn khám phá các hướng dẫn PHP hữu ích hơn?

Chúng tôi có nhiều bài viết thú vị liên quan đến PHP. Bạn có thể khám phá những điều này để tìm hiểu thêm về PHP.

Tìm kiếm nhiều giá trị trong mảng PHP

Cách lọc mảng các đối tượng theo giá trị trong PHP

Cách lọc mảng các đối tượng bằng khóa trong PHP