Reputation: 69
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:
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:
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
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
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