Best way to output PHP array into csv file

Viewed 52

I am currently working on a simple task yet a bit tricky. My task is to read all the images from the directory and write them into CSV file. So, when I read the directory I get the array list of images filename data will look like below:

array (
    '13763',
    '13763-1',
    '13763-2',
    '13764',
    '13765',
    '13765-1',
);

I wanted this data to be exported into csv file which looks like below: enter image description here

So, I am going through the foreach loop as $image which gives me each element and each loop I am checking the string has '-' character or not. If it has no '-' character than I assign $currentId = $image but if it has '-' then I assign $additionalImage .= ', '.$image.'.jpg'. But the problem is I only want to insert one row if it has additional images '13763.jpg, 13763-1.jpg, 13763-2.jpg'. Below is my code what I have done so far.

$currentId = '';
$prevId = '';
$additionalImages = '';
$addId = '';
$counter = 0;

$file = fopen('./images/M2_import_image.csv', 'w');

foreach ($images as $image) {

    
    if (strpos($image, '-') == FALSE) {
        if ($currentId != $image) {
            $mainImage = $image.'.jpg';
            // print_r($additionalImages);
            fputcsv($file, array(
               $mainImage,
               $mainImage,
               $mainImage,
               $mainImage,
               $mainImage,
               $additionalImages,
            ));
            $additionalImages = '';
        }
        $currentId = $image;
        $additionalImages = $image.'.jpg';
    }

    if (strpos($image, '-') != FALSE) {
        $addId = substr($image, 0, strpos($image, '-'));
        $additionalImages .= ', '.$image.'.jpg';
    }

}
fclose($file);
0 Answers
Related