Search code examples
phpfilefgetcsv

inserting csv file data into an array (PHP)


I am attempting to insert the data from an uploaded file into a single dimension array.

The file is as such that there is one student number to a line like so:

392232,
392231,
etc

this is the most common way I've found online:

while (($line = fgetcsv($file, 25, ',')) !== FALSE) {
        //$line is an array of the csv elements
        print_r($line);
        }

However form what I understand this will create an array ($line) for each row. Which is not what I want.

that aside I tried this to see if it is working and my code is not printing out the array after using ftgetcsv(). The file is successfully uploading.

here is my code:

    if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){

    //create file name
    $file_path = "csv_files/" . $_FILES['csv_file']['name'];

    //move uploaded file to upload dir
    if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) {
        //error moving upload file
        echo "Error moving uploaded file";
    }

    print_r($_FILES['csv_file']);

    $file = fopen('$file_path', 'r');

    while (($line = fgetcsv($file, 25, ',')) !== FALSE) {
    //$line is an array of the csv elements
    print_r($line);
    }

    //delete csv file
    unlink($file_path);
}

First off, can anyone obviously see why it wouldnt work to at least print them as seperate arrays of data (each row).

Second, is it possible to set it so that it creates a 1d array of all rows in the file?

Many thanks,


Solution

  • Question 1 is because of

    print_r($_FILES['csv_file']);
    $file = fopen('$file_path', 'r');
    

    should be:

    $file = fopen($file_path, 'r');
    

    and for Question 2, check out the array_push