|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
function generateUniqueNumericValue($existingValues, $min, $max) { |
|
4
|
|
|
do { |
|
5
|
|
|
$uniqueValue = mt_rand($min, $max); |
|
6
|
|
|
} while (in_array($uniqueValue, $existingValues)); |
|
7
|
|
|
return $uniqueValue; |
|
8
|
|
|
} |
|
9
|
|
|
|
|
10
|
|
|
// Configurable product count |
|
11
|
|
|
$productCount = 10000; // Set the number of products to generate |
|
12
|
|
|
|
|
13
|
|
|
// Path to input and output files |
|
14
|
|
|
$inputFile = 'exported_product.csv'; |
|
15
|
|
|
$outputFile = 'extended_products_' . $productCount . '.csv'; |
|
16
|
|
|
|
|
17
|
|
|
// Read the input CSV |
|
18
|
|
|
if (!file_exists($inputFile)) { |
|
19
|
|
|
die("File not found: $inputFile"); |
|
20
|
|
|
} |
|
21
|
|
|
|
|
22
|
|
|
$data = array_map(function ($line) { |
|
23
|
|
|
return str_getcsv($line, ';'); // Use ";" as the delimiter |
|
24
|
|
|
}, file($inputFile)); |
|
25
|
|
|
|
|
26
|
|
|
$header = array_shift($data); // Extract the headers |
|
27
|
|
|
|
|
28
|
|
|
// Ensure there is at least one row of data |
|
29
|
|
|
if (empty($data)) { |
|
30
|
|
|
die("No data found for processing in the file."); |
|
31
|
|
|
} |
|
32
|
|
|
|
|
33
|
|
|
// Use the first row as a template for duplication |
|
34
|
|
|
$templateRow = $data[0]; |
|
35
|
|
|
|
|
36
|
|
|
// Determine the indexes for the unique fields |
|
37
|
|
|
$gtinIndex = array_search('GTINs', $header); |
|
38
|
|
|
$nameEnIndex = array_search('name-en_US', $header); |
|
39
|
|
|
|
|
40
|
|
|
if ($gtinIndex === false || $nameEnIndex === false) { |
|
41
|
|
|
die("Required columns not found: 'GTINs', 'name-en_US'"); |
|
42
|
|
|
} |
|
43
|
|
|
|
|
44
|
|
|
// Create arrays to track unique values |
|
45
|
|
|
$existingGtins = [$templateRow[$gtinIndex]]; |
|
46
|
|
|
$existingEnNames = [$templateRow[$nameEnIndex]]; |
|
47
|
|
|
|
|
48
|
|
|
// Increase the number of records to the configured amount |
|
49
|
|
|
$data = []; // Clear the data array for populating |
|
50
|
|
|
for ($i = 0; $i < $productCount; $i++) { |
|
51
|
|
|
$newRow = $templateRow; |
|
52
|
|
|
|
|
53
|
|
|
// Generate unique 'GTINs' (numeric values, 13 characters long) |
|
54
|
|
|
$newRow[$gtinIndex] = generateUniqueNumericValue($existingGtins, 1000000000000, 9999999999999); |
|
55
|
|
|
$existingGtins[] = $newRow[$gtinIndex]; |
|
56
|
|
|
|
|
57
|
|
|
// Generate unique 'name-en_US' |
|
58
|
|
|
$newRow[$nameEnIndex] = 'V7 Noise Isolating Stereo Earbuds ' . $i; |
|
59
|
|
|
|
|
60
|
|
|
$data[] = $newRow; |
|
61
|
|
|
} |
|
62
|
|
|
|
|
63
|
|
|
// Save the result to a new CSV file with ";" as the delimiter |
|
64
|
|
|
$outputHandle = fopen($outputFile, 'w'); |
|
65
|
|
|
if ($outputHandle === false) { |
|
66
|
|
|
die("Failed to open file for writing: $outputFile"); |
|
67
|
|
|
} |
|
68
|
|
|
|
|
69
|
|
|
// Write headers |
|
70
|
|
|
fputcsv($outputHandle, $header, ';'); |
|
71
|
|
|
|
|
72
|
|
|
// Write data |
|
73
|
|
|
foreach ($data as $row) { |
|
74
|
|
|
fputcsv($outputHandle, $row, ';'); |
|
75
|
|
|
} |
|
76
|
|
|
|
|
77
|
|
|
fclose($outputHandle); |
|
78
|
|
|
|
|
79
|
|
|
echo "File successfully created: $outputFile\n"; |
|
80
|
|
|
|