Read all csv files in directory doesn't read lines correctly

Jake

I have a script that reads all CSV files in a given directory. The reading is okay, but the output isn't what I'm seeking.

The content of the files is

7,5133606393691467151,000000000000000000
5,-841871172646878578,00000000000000
8,-482903031559659252,000000000000

Desired output

Array (
    [0] => Array
    (
       id: 7
       number_1: 5133606393691467151
       number_2: 000000000000000000
    )
    [1] => Array (
       id: 5
       number_1: -841871172646878578
       number_2: 00000000000000
    )
    [2] => Array (
       id: 8
       number_1: -482903031559659252
       number_2: 000000000000
    )
)

This is my code so far

$files = glob("SQLs/*.csv");

foreach($files as $file) {

    if (($handle = fopen($file, "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
            foreach ($data as $lineArr) {
                list($id[],$number_1[],$number_2[]) = $lineArr;
            }
        }
        fclose($handle);
    } else {
        echo "Could not open file: " . $file;
    }
}

Currently got error 500 when I run it through the browser. If I run it in a console like php example.php >> output.txt got nothing again. The file output.txt is empty.

RiggsFolly

Simplify the idea a bit, as fgetcsv() returns an array containing only the values from that line of the .csv, you just need to place those values into an assoc array of the size and shape of your choosing.

$files = glob("SQLs/*.csv");
$desired= [];   //init the receiving array

foreach($files as $file) {

    if (($handle = fopen($file, "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
            $desired[] = [  'id'        => $data[0], 
                            'number_1'  => $data[1], 
                            'number_2'  => $data[2] 
                         ];
        }
        fclose($handle);
    } else {
        echo "Could not open file: " . $file;
    }
}

This of course would put all the data from all the files into one array. You may find if there is a lot of data, this may blow your max memory. But thats another issue.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

R doesn´t read all lines of a csv

Pandas doesn't read a csv correctly

Using chdir() to read all csv files in a directory

read_csv doesn't read the column names correctly on this file?

Read in all csv files from a directory using Python

NETLOGO: find all csv files in a directory and read them in

read all csv files in a directory using `purrr:map()`

Function doesn't execute the read.csv lines

R read all files in a directory

Read all lines of csv file using .read_csv

How to read csv files correctly using pandas?

Can a user who doesn't have permission to read a directory still read files inside it?

All lines not being read while executing read.csv in R

Powershell doesn't read files size correctly if these are in progress of change (i.e files being downloaded)

Batch file doesn't read flags correctly

Scanner doesn't read line correctly

fscanf doesn't read double correctly

python read all files in directory and subdirectories

How to read content of all files in 1 directory

How to read all .log files from directory

Open a specific directory and read all the text files

How to read all .txt files from a directory

Perl first line read in from a CSV file doesn't match correctly against ^ regex

Read all csv files in a directory and add the name of each file in a new column

librdkafka C API Kafka Consumer doesn't read all messages correctly

Python3 - For key in dict read file lines, doesn't working with all items

Read all lines with BufferedReader

Read two csv files and compare every line. If the lines match print both lines, if it isn't similar print invalid

bash script doesn't read pytest files