gpt4 book ai didi

php - 如何在不重复 header 的情况下合并多个 CSV 文件(使用 PHP)?

转载 作者:太空宇宙 更新时间:2023-11-04 11:43:05 25 4
gpt4 key购买 nike

我是 PHP 的新手,当我将几个 csv 文件与此代码组合时,会显示几个标题。我怎么能留下一个标题?

我正在使用带有 PHP 7.1 的 ubuntu 18.04 服务器

<?php

$csvdir = "./csv";
$csvcontent = '';
if (is_dir($csvdir)) {
if ($handle = opendir($csvdir)) {
while (($file = readdir($handle)) !== false) {
if (substr($file, -4) === ".csv") {
$csvcontent .= file_get_contents($csvdir . $file);
}
}
closedir($handle);
}
}

$result = fopen('./todos.csv', 'w');
fwrite($result, $csvcontent);
fclose($result);
?>

最佳答案

根据 this answer使用示例代码在获取文件内容后跳过第一行:

$content = file_get_contents($filename);
$lines = explode("\n", $content);
$skipped_content = implode("\n", array_slice($lines, 2));

您可以像这样更改您的代码(尽管就个人而言,我可能只是更改 csv 文件的生成以停止生成 header ...因为展开内容可能会减慢您的进程)。

<?php

$got_headers = 0;
$csvdir = "./csv";
$csvcontent = '';
if (is_dir($csvdir)) {
if ($handle = opendir($csvdir)) {
while (($file = readdir($handle)) !== false) {
if (substr($file, -4) === ".csv") {
if (empty($got_headers)) {

// get the headers the first time only
$csvcontent .= file_get_contents($csvdir . $file);
$got_headers = 1;
} else {

// now, pull the lines after the first
$content = file_get_contents($csvdir . $file);
$lines = explode("\n", $content);

$csvcontent .= implode("\n", array_slice($lines, 1));
}
}
}
closedir($handle);
}
}

$result = fopen('./todos.csv', 'w');
fwrite($result, $csvcontent);
fclose($result);

关于php - 如何在不重复 header 的情况下合并多个 CSV 文件(使用 PHP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com