分解csv文件并重新创建数组


Breaking up a csv file and recreating the arrays

我不需要你来做我的工作,只要给我指个方向就行了。我是php的新手,我想我能弄清楚,我只需要在正确的方向上指出这一点。

我有一个csv文件的业务信息(公司,地址,城市,电子邮件等)

有些记录在email字段中有多个email地址。每个值以分号(;)分隔,

我想做的是最终每行有一个电子邮件记录。如果在原始行中有3个电子邮件地址,当我完成时,我需要3行各有一个电子邮件地址。

大多数记录只有一个电子邮件地址,但有些记录有多达12个电子邮件地址。

我知道这里有数据正常问题,但我正在构建一个转换实用程序来馈送另一个应用程序。

再一次,我不是在寻找最终的代码,虽然我不会拒绝;),我只是希望被指向正确的方向。

谢谢你的帮助…杰夫

首先,使用fgetcsv()读取文件。这将自动拆分行和列:

while (($data = fgetcsv($handle, 1000, ","))) {
    // do something
}

您必须知道哪个字段是电子邮件字段(根据您的列表,应该是字段3(3而不是4,因为$data是一个从零开始的数组))。使用explosion()拆分邮件地址:

$emails = explode(";", $data[3]);

之后,你只需要嵌套循环:

while (($data = fgetcsv($handle, 1000, ","))) {
    $company = $data[0];
    $address = $data[1];
    $city = $data[2];
    $emails = explode(" ", $data[3]);
    foreach($emails as $email){
        // do something with $company, $address, $email...
    }
}

这里有一个提示。你有一个这样的CSV(公司、地址、城市、电子邮件等),你说你有多个电子邮件,用一个不同的字符(分号)分隔。然后,您可以认为字段地址具有"分号"分隔的值(CSV但使用;而不是a,)像这样email = (email1;email2;email3;等)

如果你需要更多的帮助请告诉我