我閱讀了官方的 phpnet 資源,但我不能。
我有 2 個陣列。
第一個陣列:
Array
(
[0] => KDS-1655B
[1] => KS-9916
[2] => KDS-1197
[3] => KDS-4164
[4] => MRK-1994
[5] => KDS-9773
) // LONG ARRAY, THIS IS EXAMPLE
第二個陣列:
Array
(
[0] => PRODUCTNAME1
[1] => PRODUCTNAME2
[2] => PRODUCTNAME3
[3] => PRODUCTNAME4
[4] => PRODUCTNAME5
[5] => PRODUCTNAME6
) // LONG ARRAY, THIS IS EXAMPLE
現在,我想創建帶有 2 個標題和 2 列的 CSV 檔案。我試過這個:
$data = array(
array($first_array, $second_array), // ARRAY CONTENTS
$filename = 'mycsv' . '.csv';
$delimiter = ',';
$f = fopen('php://memory', 'w');
$headings = array('firstheader', 'secondheader',); // HEADERS
fputcsv($f, $headings, $delimiter);
foreach($data as $row) {
fputcsv($f, $row, $delimiter);
}
fseek($f, 0);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
fpassthru($f);
fclose($f);
exit();
但是所有陣列都在單個標題中生成。對于這個問題,我能做些什么?感謝和問候。
uj5u.com熱心網友回復:
出于解釋的目的,我將資料減少到:
$first_array:
Array {
[0]=> KDS-1655B
[1]=> KS-9916
}
$second_array:
Array {
[0]=> PRODUCTNAME1
[1]=> PRODUCTNAME2
}
你填寫的方式$data是錯誤的,因為$data = array($first_array, $second_array);會給你:
Array {
[0]=> Array {
[0]=> KDS-1655B
[1]=> KS-9916
}
[1]=> Array {
[0]=> PRODUCTNAME1
[1]=> PRODUCTNAME2
}
}
雖然您需要:
Array {
[0]=> Array {
[0]=> KDS-1655B
[1]=> PRODUCTNAME1
}
[1]=> Array {
[0]=> KS-9916
[1]=> PRODUCTNAME2
}
}
如果我沒記錯的話,PHP 沒有提供任何函式來生成這種連接,你必須自己撰寫代碼,例如這樣:
$data = array();
$size = count($first_array);
for ($i = 0; $i < $size; $i ) {
$data[] = array( $first_array[$i], $second_array[$i] );
}
你已經完成了。生成的 CSV 將類似于:
KDS-1655B,PRODUCTNAME1
KS-9916,PRODUCTNAME2
您的固定代碼
$filename = 'mycsv' . '.csv';
$delimiter = ',';
$data = array();
$size = count($first_array);
for ($i = 0; $i < $size; $i ) {
$data[] = [ $first_array[$i], $second_array[$i] ];
}
$f = fopen('php://memory', 'w');
$headings = array('firstheader', 'secondheader'); // HEADERS
fputcsv($f, $heading, $delimiter);
foreach($data as $row) {
fputcsv($f, $row, $delimiter);
}
fseek($f, 0);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
fpassthru($f);
fclose($f);
exit();
另一個代碼
$csv_filename = 'mycsv.csv';
$csv_header = array('firstheader', 'secondheader');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $csv_filename . '";');
$fp = fopen('php://memory', 'w');
fputcsv($fp, $csv_header);
$size = count($first_array);
for ($i = 0; $i < $size; $i ) {
fputcsv($fp, [ $first_array[$i], $second_array[$i] ]);
}
fseek($fp, 0);
fpassthru($fp);
fclose($fp);
exit();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329519.html
