0

I am trying to generate unique CSV files from the csv data that I have using the following loop.

 $k =1;
 foreach ($csv_tbl as $_csv) {
        $filename = "Agent_" . $k . ".csv";
        $file_path = "agents/$filename";
        file_put_contents($file_path, $_csv);
        if (file_exists($_csv)) {
            header('Content-Description: File Transfer');
            header('Content-type: text/csv');
            header('Content-Disposition: attachment; filename=' . $filename);
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($_csv));
            readfile($_csv);
            die();
        }
        $k++;
    }

The first file generated is perfect and only has the data it should have i.e the first csv table. The second file has both the first and the second tables this goes on for all my 21 files which means the 21st file will have all the tables.

Visual example of the first two files.

Agent_1.csv Agent_2.csv

How can I prevent duplicates tables from my csv file?

4
  • @Masiorama I need seperate files..... Commented Jun 16, 2015 at 10:00
  • Mh, ok, then I would try checking every row against the time row, assuming it is unique, and remove the subsequent occurrencies... you could fill a multidimensional array using the csv id as key, and inside time as the key and the rest of the data as value... I'm not that sure about that, though. Commented Jun 16, 2015 at 10:05
  • To answer your question we need to know what is $k and $csv_tbl Commented Jun 16, 2015 at 10:07
  • @kulaeff $csv_tbl is an array that contains all my csv data. $k is an int $k=1. Commented Jun 16, 2015 at 10:10

1 Answer 1

1

As your foreach is printing duplicates , it means that your array $csv_tbl contains duplicate values, you can remove duplicate values from array using array_unqiue But also by looking at the screenshots i can see that the callid is different for every record. do your csv contain duplicates?::

 $k =1;
 $csv_tbl = array_unique($csv_tbl);
 foreach ($csv_tbl as $_csv) {
        $filename = "Agent_" . $k . ".csv";
        $file_path = "agents/$filename";
        file_put_contents($file_path, $_csv);
        if (file_exists($_csv)) {
            header('Content-Description: File Transfer');
            header('Content-type: text/csv');
            header('Content-Disposition: attachment; filename=' . $filename);
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($_csv));
            readfile($_csv);
            die();
        }
        $k++;
    }
Sign up to request clarification or add additional context in comments.

1 Comment

After some further investigation you're definitely right about this array does indeed have duplicates.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.