使用数据库中的数据创建 CSV 文件,给出 "mosaic, straggly" 个结果
Creating CSV file using data from database, gives "mosaic, straggly" results
代码的第一部分工作正常,但第二部分(显示结果)工作错误。如果我在 foreach ($pma...)
中插入 $slugs = explode(',', $slugs)
,它会给我 explode() expects parameter 2 to be string, array given
错误。如果我现在保留它,它可以工作,但结果以 "mosaic, straggly" 模式给出,有多个相同的结果。即使 print_r()
每行显示 800 个结果(这是胡说八道)。
如何解决这个问题?
$data = fopen('php://output', 'w');
$fields = rtrim($_GET['fieldnames'], ",");
$slugs = rtrim($_GET['slugs'], ",");
$fieldnames = array();
$fieldslugs = array();
$pma = DB::table... // long query
$fields = explode(',', $fields);
foreach ($fields as $field) {
$fieldnames[] = $field;
}
fputcsv($data, $fieldnames);
$slugs = explode(',', $slugs);
foreach ($pma as $p) {
foreach ($slugs as $slug) {
$fieldslugs[] = $p->$slug;
}
fputcsv($data, $fieldslugs);
}
抱歉英语不好,谢谢任何答案!
需要在foreach
前面加上$fieldslugs = [];
$fieldslugs = [];
foreach ($slugs as $slug) {
$fieldslugs[] = $p->$slug;
}
fputcsv($data, $fieldslugs);
试试这个:
foreach ($pma as $p) {
$fieldslugs = [];
foreach ($slugs as $slug) {
$fieldslugs[] = $p->$slug;
}
fputcsv($data, $fieldslugs);
}
您需要为每次迭代重置数组,否则它将继续填充同一个数组,从而将新行结果附加到每个 csv 行。
代码的第一部分工作正常,但第二部分(显示结果)工作错误。如果我在 foreach ($pma...)
中插入 $slugs = explode(',', $slugs)
,它会给我 explode() expects parameter 2 to be string, array given
错误。如果我现在保留它,它可以工作,但结果以 "mosaic, straggly" 模式给出,有多个相同的结果。即使 print_r()
每行显示 800 个结果(这是胡说八道)。
如何解决这个问题?
$data = fopen('php://output', 'w');
$fields = rtrim($_GET['fieldnames'], ",");
$slugs = rtrim($_GET['slugs'], ",");
$fieldnames = array();
$fieldslugs = array();
$pma = DB::table... // long query
$fields = explode(',', $fields);
foreach ($fields as $field) {
$fieldnames[] = $field;
}
fputcsv($data, $fieldnames);
$slugs = explode(',', $slugs);
foreach ($pma as $p) {
foreach ($slugs as $slug) {
$fieldslugs[] = $p->$slug;
}
fputcsv($data, $fieldslugs);
}
抱歉英语不好,谢谢任何答案!
需要在foreach
前面加上$fieldslugs = [];
$fieldslugs = [];
foreach ($slugs as $slug) {
$fieldslugs[] = $p->$slug;
}
fputcsv($data, $fieldslugs);
试试这个:
foreach ($pma as $p) {
$fieldslugs = [];
foreach ($slugs as $slug) {
$fieldslugs[] = $p->$slug;
}
fputcsv($data, $fieldslugs);
}
您需要为每次迭代重置数组,否则它将继续填充同一个数组,从而将新行结果附加到每个 csv 行。