代码之家  ›  专栏  ›  技术社区  ›  Tauras

使用数据库中的数据创建CSV文件,会产生“马赛克,杂乱无章”的结果

  •  0
  • Tauras  · 技术社区  · 8 年前

    代码的第一部分工作正常,但第二部分(显示结果)工作不正常。如果我插入 $slugs = explode(',', $slugs) 在…内 foreach ($pma...) ,它给了我 explode() expects parameter 2 to be string, array given 错误如果我保持现在的状态,它可以工作,但结果是以“马赛克,零散”模式给出的,具有多个相同的结果。即使 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);
    
    }
    

    对不起,英语不好,请回答我的问题!

    2 回复  |  直到 8 年前
        1
  •  1
  •   riekelt    8 年前

    试试这个:

    foreach ($pma as $p) {
      $fieldslugs = [];
      foreach ($slugs as $slug) {
        $fieldslugs[] = $p->$slug;
      }
    
      fputcsv($data, $fieldslugs);
    
    }
    

        2
  •  1
  •   Marius Bogdan    8 年前

    你需要添加 $fieldslugs = []; 在前额前

    $fieldslugs = [];
    foreach ($slugs as $slug) { 
        $fieldslugs[] = $p->$slug;
    }
    
    fputcsv($data, $fieldslugs);