Как добавить столбцы в массив строк CSV в PHP: методы и примеры

Чтобы добавить столбцы в массив строк CSV в PHP, вы можете использовать различные методы. Вот несколько подходов, которые вы можете рассмотреть:

Метод 1: использование str_getcsv() и implode():

$csvString = "column1,value1\ncolumn2,value2";
$delimiter = ',';
$columnsToAdd = ['column3', 'column4'];
// Convert CSV string to array
$array = array_map('str_getcsv', explode("\n", $csvString));
// Add new columns to each row
foreach ($array as &$row) {
    $row = array_merge($row, $columnsToAdd);
}
// Convert array back to CSV string
$csvString = implode($delimiter, $columnsToAdd) . "\n" . implode($delimiter, $array[0]) . "\n" . implode($delimiter, $array[1]); // Modify as per your array length
echo $csvString;

Метод 2: использование fputcsv() и fopen():

$csvString = "column1,value1\ncolumn2,value2";
$delimiter = ',';
$columnsToAdd = ['column3', 'column4'];
// Create a temporary file handle
$tempFile = fopen('php://temp', 'w');
// Write CSV string to temporary file
fwrite($tempFile, $csvString);
// Rewind the temporary file pointer
rewind($tempFile);
// Create a new CSV file handle
$newFile = fopen('new.csv', 'w');
// Process each row and add new columns
while (($row = fgetcsv($tempFile, 0, $delimiter)) !== false) {
    $row = array_merge($row, $columnsToAdd);
    fputcsv($newFile, $row, $delimiter);
}
// Close file handles
fclose($tempFile);
fclose($newFile);
// Read the modified CSV from the new file
$modifiedCsvString = file_get_contents('new.csv');
echo $modifiedCsvString;

Метод 3: использование str_replace():

$csvString = "column1,value1\ncolumn2,value2";
$columnsToAdd = ['column3', 'column4'];
// Add new columns to the header row
$headerRow = strtok($csvString, "\n");
$headerRow .= ',' . implode(',', $columnsToAdd);
// Add empty values for new columns in each subsequent row
$dataRows = '';
while (($row = strtok("\n")) !== false) {
    $row .= ',' . str_repeat(',', count($columnsToAdd));
    $dataRows .= $row . "\n";
}
$modifiedCsvString = $headerRow . "\n" . $dataRows;
echo $modifiedCsvString;

Эти методы позволяют добавлять столбцы в массив строк CSV в PHP. Обратите внимание: код предполагает, что строка CSV имеет правильный формат и не содержит особых случаев.