user3669523
user3669523

Reputation: 69

Read and load two CSV files

I have two very small CSV files that I want to load into array and compare each row and their individual cells, and if there is a change in any cell highlight it.

At the moment I am writing a script to load files and display these onto the browser as they appear on the files.

CSV structure:

enter image description here

My PHP Code:

<?php
$row = 1;
$row2 = 1;
if (($file = fopen("Workbook1.csv", "r")) !== FALSE && ($file2 = fopen("Workbook2.csv", "r")) !== FALSE ) {

    while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {

        $num = count($data);
        echo "<p> $num fields in line $row Orginal File: <br /></p>\n";
        $row++;

        for ($i=0; $i < $num; $i++) {
            echo $data[$i] . "<br />\n";
        }

    while(($data2 = fgetcsv($file2, 1000 , ",")) !== FALSE){

        $num2 = count($data2);
        echo "<p> $num2 fields in line $row2 Updated File: <br /></p>\n";
        $row2++;

        for ($x=0; $x < $num2; $x++) {
            echo $data2[$x] . "<br />\n";
        }

    }

    }
    fclose($file);
    fclose($file2);
}

?>

Browser Result:

enter image description here

Not to sure why the Array is structured like above image as i understand fgetcsv() read line by line.

Any one can see my my stake in code..?

Upvotes: 0

Views: 567

Answers (2)

user3669523
user3669523

Reputation: 69

After reading this enter link description here

I managed to fix it by adding this line of code at the top of the file before fopen()

ini_set('auto_detect_line_endings',TRUE);

If you need to set auto_detect_line_endings to deal with Mac line endings, it may seem obvious but remember it should be set before fopen, not after:

Having this fixers how can i Compare the values between these two files..?

Upvotes: 0

RiggsFolly
RiggsFolly

Reputation: 94662

You are not closing the first while loop in the right place.

Try this

<?php
$row = 1;
$row2 = 1;

if (($file = fopen("Workbook1.csv", "r")) !== FALSE && ($file2 = fopen("Workbook2.csv", "r")) !== FALSE ) {

    while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {

        $num = count($data);
        echo "<p> $num fields in line $row Orginal File: <br /></p>\n";
        $row++;

        for ($i=0; $i < $num; $i++) {
            echo $data[$i] . "<br />\n";
        }
    } // end first while loop

    while(($data2 = fgetcsv($file2, 1000 , ",")) !== FALSE){

        $num2 = count($data2);
        echo "<p> $num2 fields in line $row2 Updated File: <br /></p>\n";
        $row2++;

        for ($x=0; $x < $num2; $x++) {
            echo $data2[$x] . "<br />\n";
        }

    }

    fclose($file);
    fclose($file2);
}

?>

Upvotes: 0

Related Questions