b0w3rb0w3r
b0w3rb0w3r

Reputation: 937

How to stop foreach loop from printing duplicate data?

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?

Upvotes: 0

Views: 720

Answers (1)

Arsh Multani
Arsh Multani

Reputation: 1591

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++;
    }

Upvotes: 1

Related Questions