我正在编写一个脚本来输出在县上排序的csv文件(荷兰语的gemeente),但是这个foreach循环只输出第一个县。
这是我的foreach循环
foreach($result as $gemeentearray){
$output = array();
$filename = $gemeentearray[0]['gemeente'];
$csv = new CSV(array('naam', 'objecttype', 'hoofdcategorie 1', 'subcategory 1', 'subsubcategory 1', 'hoofdcategorie 2', 'subcategory 2', 'subsubcategory 2', 'hoofdcategorie 3', 'subcategory 3', 'subsubcategory 3', 'icoon', 'lat', 'lng', 'straat', 'huisnummer', 'toevoeging', 'postcode', 'plaats', 'afbeelding', 'website', 'minisite', 'informatie', 'telefoonnummer', 'email', 'contact', 'id', 'afbeeldingen'));
foreach ($gemeentearray as $locatie) {
unset($locatie['gemeente']);
$csv->addRow($locatie);
}
$csv->export($filename);
$string = $csv;
unset($csv);
}
这里是csv类
class CSV {
protected $data;
/*
* @params array $columns
* @returns void
*/
public function __construct($columns) {
$this->data = '' . implode(';', $columns) . '' . "\n";
}
/*
* @params array $row
* @returns void
*/
public function addRow($row) {
$this->data .= '' . implode(';', $row) . '' . "\n";
}
/*
* @returns void
*/
public function export($filename) {
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="' . $filename . '.csv"');
echo $this->data;
die();
}
public function __toString() {
return $this->data;
} }
答案 0 :(得分:0)
这是因为你使用die();它终止了脚本的执行,你只看到第一个国家。因此,您无法循环发送多个文件,您需要告诉客户端内容结束的位置以及新标头的开头。您可以使用zip实用程序并将其打包下载。