Converting CSV file into an Array in PHP

Posted By : Ishaan Madan | 12-Jan-2017

This Blog helps to illustrate the method to import CSV file into an associative PHP array. PHP uses fgetcsv function for this specific purpose. The array created is associative which helps in accessing the value by the column field heading at the top of the CSV file.

The PHP fgetcsv function imports and reads the CSV file into an associative array on the basis of the column heading in the first row. To use it, we can call the function with an appropriate file as a parameter. The function after execution outputs an associative array containing imported .csv file data.

Note:  Imported CSV must possess first row as column headings as it is used to generate the associative array elements.

Read CSV using PHP

function ImportCSV2Array($filename)
    $row = 0;
    $col = 0;
    $handle = @fopen($filename, "r");
    if ($handle) 
        while (($row = fgetcsv($handle, 4096)) !== false) 
            if (empty($fields)) 
                $fields = $row;
            foreach ($row as $k=>$value) 
                $results[$col][$fields[$k]] = $value;
        if (!feof($handle)) 
            echo "Error: unexpected fgets() failn";
    return $results;


$filename = "demo.csv";
$csvArray = ImportCSV2Array($filename)
foreach ($csvArray as $row)
    echo $row['column1'];
    echo $row['column2'];
    echo $row['column3'];


The function reads each and every line of the CSV file using fgetcsv function. This function renders the line for fields in CSV format to return an associative array possessing the required data. The array has the first item at 0th location, second at 1st and process continues.

The initial row of data acts like the headings, thereafter a loop iterates over each element of array from fgetcsv and enters it for each column heading.The associative array is useful because it eliminates indexes which otherwise often confuse and are hard to remember for any specific field(column).


About Author

Author Image
Ishaan Madan

Ishaan is a qualified and dedicated Technical Project Manager with 7 years of experience building web apps, platforms and leading full stack projects that have a meaningful impact to the company and clients. His technical skill set includes, Python, Django, JavaScript and MySQL.

Request for Proposal

Name is required

Comment is required

Sending message..