在尝试将数组转换为 CSV 格式时,开发人员可能会遇到诸如无休止的挑战线路并禁用强制下载。本文解决了这些问题并提出了一种更有效的方法。
初始代码尝试使用多个嵌套循环从数据库中提取数据并追加将其保存为 CSV 文件。但是,此方法会生成单行长行,而不是格式正确的 CSV。此外,文件下载不会自动启动。
要解决这些问题,请考虑实施以下步骤:
利用 fputcsv() 写入值:
<code class="php">fputcsv($output, array('id','name','description'));</code>
强制文件下载:
<code class="php">header("Content-Disposition:attachment;filename=pressurecsv.csv"); </code>
合并上述建议会产生更有效的代码:
<code class="php">$num = 0; $sql = "SELECT id, name, description FROM products"; if($result = $mysqli->query($sql)) { while($p = $result->fetch_array()) { $prod[$num]['id'] = $p['id']; $prod[$num]['name'] = $p['name']; $prod[$num]['description'] = $p['description']; $num++; } } $output = fopen("php://output",'w') or die("Can't open php://output"); header("Content-Type:application/csv"); header("Content-Disposition:attachment;filename=pressurecsv.csv"); fputcsv($output, array('id','name','description')); foreach($prod as $product) { fputcsv($output, $product); } fclose($output) or die("Can't close php://output");</code>
这种改进的方法利用 fputcsv() 来高效生成 CSV 行,并设置必要的标头来启动文件下载。
以上是如何解决将 PHP 数组导出为 CSV 格式的挑战?的详细内容。更多信息请关注PHP中文网其他相关文章!