在php中导入时从csv中删除重复记录

k客

我想从html表单导入csv文件并在php中处理它。动态创建表并将其附加到我的div中以进行预览。

我只想要表内唯一记录的数组。

我在php中有以下代码:

$tmpName = $_FILES['blk_csv']['tmp_name'];

$csvAsArray = array_unique((array_map('str_getcsv', file($tmpName))),SORT_REGULAR);

$table_data = '<table id="template_table" name="template_table" class="table">';
$csvAsArrayU = $csvAsArray;

for ($i = 0; $i < count($csvAsArrayU); $i++) {
     
     if($i == 0){
        
         $table_data .= '<thead><tr>';
        
         for($h = 0 ; $h < count($csvAsArrayU[$i]); $h++){
            
            
             $table_data .= '<th class="text-center">'.$csvAsArrayU[$i][$h].'</th>';

         }
        
         $table_data .= '</tr></thead><tbody>';

     }
      else{
         $table_data .= '<tr id="row-'.$i.'">';
            
         for($r = 0 ; $r < count($csvAsArrayU[$i]); $r++){
                
            $table_data .= '<td  class="text-center">'.$csvAsArrayU[$i][$r].'</td>';

         }
         $table_data .= '</tr>';
        
      }
    
}
$table_data .= ' </tbody></table>'; 

我的csv结构

 NAME,EMAIL
 Morris,[email protected]
 Morris,[email protected]
 Morris,[email protected]
 Jacob,[email protected]

如果您print_r($csvAsArray)给我以下输出:

Array ( [0] => Array ( [0] => NAME [1] => EMAIL ) [1] => Array ( [0] => Morris [1] => [email protected] ) [8] => Array ( [0] => Jacob [1] => [email protected] ) ) 

如果您注意到第三个元素的索引是8而不是2,那么DataTable库将无法加载数据并显示如下内容:

在此处输入图片说明

谁能指导我解决这个问题?还是仅加载数组中唯一行的另一种方法?

马纳夫
$csvAsArray = array_values($csvAsArray)

应该为您工作,这将重置数组的键,以便第三个元素的索引为2。

:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章