您的程式碼旨在將產品數組轉換為CSV 文件,但您遇到了導致單行輸出的問題沒有正確的下載標頭。
單行輸出的根本原因在於建構 CSV 內容的巢狀循環。考慮使用 fputcsv() 函數簡化流程,而不是手動建立 CSV。這簡化了流程並確保格式正確。
要觸發檔案下載,您需要設定適當的 HTTP 標頭。具體操作方法如下:
<code class="php">header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=your_desired_name.csv");</code>
但是,提供的程式碼將 CSV 檔案直接寫入輸出流,從而使您可能用於客戶端處理的 JavaScript 程式庫無法存取它。
這是使用fputcsv() 解決這些問題的替代方法:
<code class="php">$sql = "SELECT id, name, description FROM products"; if($result = $mysqli->query($sql)) { $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')); while($p = $result->fetch_array()) { fputcsv($output, $p); } fclose($output) or die("Can't close php://output"); }</code>
此程式碼建立CSV 檔案並將其串流傳輸到輸出緩衝區。 fputcsv() 函數會自動處理格式化和轉義值。最後一行關閉輸出流,釋放資源。
以上是將 PHP 陣列轉換為 CSV 時如何處理單行輸出和檔案下載?的詳細內容。更多資訊請關注PHP中文網其他相關文章!