【发布时间】:2012-10-30 09:13:37
【问题描述】:
在一个网络应用程序中,我的用户上传了一个 csv 文件,我需要在进入数据库的过程中对其进行检查。部分信息形成了一个简单的分层数据集,因此我想确保行是唯一的。以下是我的想法,举个例子。
CSV 包括这些行...
field5 field6 field7
fred bert apple
fred bert apple
fred george
fred george pear
will tom orange
will tom plum
我打算将它们吸收到这样的 PHP 数组中。
$unique_fields = array();
while( $row = fgetcsv($handle) ){
if( $row[5] ){
if( !array_key_exists( $row[5] , $unique_fields ) ){
$unique_fields[ $row[5] ] = array();
}
if( $row[6] ){
if( !array_key_exists( $row[6] , $unique_fields[ $row[5] ] )){
$unique_fields[ $row[5] ][ $row[6] ] = array();
}
if( $row[7] ){
if( !array_key_exists( $row[7], $unique_fields[ $row[5] ][ $row[6] ] )){
$unique_fields[ $row[5] ][ $row[6] ][ $row[7] ] = array();
}
}
}
}
}
如果这是一个好主意(我愿意接受建议)- 之后最好的方法是什么?我想将数组传输到我的数据库中,使其看起来像上面的 csv 示例,但没有重复。
【问题讨论】:
-
这个问题是如何涉及层次结构的?您只需要对行进行重复数据删除吗?
-
@Skrol29 - 重点是简化 csv 的层次结构。 csv 可能有 10,000 行,但相关列中的层次结构可能仅包含(例如)10-12 个唯一项。这些将进入与其余 csv 数据不同的表中。
标签: php mysql csv hierarchical-data