我需要一些帮助,我将表导出到csv文件,这为我添加了8个空行。为什么?也许任何人都可以帮我一点。
export.ctp文件
<?php
foreach ($data as $row):
foreach ($row['Kontaktid'] as &$cell):
// Escape double quotation marks
$cell = '"' . preg_replace('/"/','""',$cell) . '"';
endforeach;
echo implode(',', $row['Kontaktid']) . "\n";
endforeach;
?>
这就是这样做
但我不想要这些空行,当我将这个文件导入mysql时,它也添加了这些空行。
感谢您的帮助!
如果我输入var dump,那么我就明白了。
答案 0 :(得分:3)
试试这个:
$fh = fopen('./file1.csv', 'wt');
foreach ($data as $row) {
if (! empty($row['Kontaktid'])) {
fputcsv($fh, $row['Kontaktid']);
}
}
fclose($fh);
将'./file1.csv'
替换为您的文件名和路径。如果您需要在屏幕上转储CSV内容,请将第一行替换为$fh = STDOUT;
答案 1 :(得分:1)
使用你的代码:
<?php
foreach ($data as $row):
$isRowEmpty = false;
foreach ($row['Kontaktid'] as &$cell):
// we assume the row is empty if the first cell is empty
if(empty($cell)) {
$isRowEmpty = true;
break;
} else {
// Escape double quotation marks
$cell = '"' . preg_replace('/"/','""',$cell) . '"';
}
endforeach;
if(!$isRowEmpty) {
echo implode(',', $row['Kontaktid']) . "\n";
}
endforeach;
?>
希望这有帮助!
答案 2 :(得分:1)
检查一下,你的行不是空的:
<?php
foreach ($data as $row):
if (!isset($row['Kontaktid']) || !$row['Kontaktid']) continue; // <-add this line
foreach ($row['Kontaktid'] as &$cell):
// Escape double quotation marks
$cell = '"' . preg_replace('/"/','""',$cell) . '"';
endforeach;
echo implode(',', $row['Kontaktid']) . "\n";
endforeach;
可能问题不在此代码中。
检查两次,没有任何换行在任何地方回响
可能是这样的:
<?php
//php code
?>
↓
↓
↓
<?php ?>
区块之外的所有内容均等同于echo "...";
因此,这些换行符的打印方式与echo "\n\n\n\n";
良好做法是删除最后?>
答案 3 :(得分:0)
添加:
if (isset($row['Kontaktid']) && strlen($row['Kontaktid']) && !empty($row['Kontaktid']))
之前:
echo implode(',', $row['Kontaktid']) . "\n";