如何使用相同的ID对php和两个csv文件进行操作

时间:2019-06-20 07:38:36

标签: php csv fgetcsv

我是php的新手,我想用php处理两个不同的csv文件。

这是我的两个csv文件的屏幕截图: https://www.noelshack.com/2019-25-4-1561015547-csv1.png https://www.noelshack.com/2019-25-4-1561015547-csv2.png

在我的两个csv中,我具有相似的ID和不同的价格(“ Prix HT”列)。

我想做的是检查相似的ID,并使用价格进行操作。

例如,对于ID为96885的CSV1,我的价格为40。 对于同一个ID,在CSV2中,我有两个价格:45和48。

我在php中想要的是一种创建另一列的方法,该列可以根据csv1文件计算csv2文件的价格差异。 在上面的示例中,代码应为5和8。

我打算在海量CSV文件中执行此类操作。

我只想出如何使用fgetcsv函数使用php使csv文件出现在数组中,但我不知道下一步该怎么做。

这是我到目前为止的代码,不是很多,因为我不知道下一步该怎么做:

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>TITLE</title>
        <link rel="stylesheet" type="text/css" href="css/styles.css">
    </head>

    <body>

    <?php

set_time_limit (0);
$testcsv = fopen('test.csv', 'a+');
$testcsv2 = fopen("test2.csv", "a+");
$fichierFinal = fopen('final.csv', 'w');

while($row=fgetcsv($testcsv, 99999,';')){
    $ID_product = $row[0];
    $price_product = $row[3];

    while($row1=fgetcsv($testcsv2, 99999,';')){
        $ID_combination = $row1[0];
        $price_combination = intval($row1[3]);



        if($ID_product == $ID_combination ){
            $fprice = $price_combination - $price_product;
            $row1[3]=$fprice;

        }
        fputcsv($fichierFinal, $row1, ";");
    };

}
?>

    </body>
</html>

1 个答案:

答案 0 :(得分:0)

我尝试了脚本。请注意,我使用两个CSV文件,每个文件只有一列:

enter image description here

< val rawDataTest = sc.textFile("/home/hduser1/Pictures/LogTextTest.txt")
 val header1 = rawDataTest.first()
 val rawDataTest1 = rawDataTest.filter(line => line != header1)
 val records1 = rawDataTest1.map(line => line.split(","))
 records1.first()

case class StumbleUpon1(id: String, text: String)
val data1 = records1.map{ r1 =>
    val trimmed1 = r1.map(_.replaceAll("\"", ""))
    //val label1 = trimmed(r1.size - 1).toInt
    val features = trimmed1.slice(0, r1.size)
    assert(features.size == 2)
    StumbleUpon1(features(0), features(1))
}


 data1.first()
 val Test = data1.toDF("id", "text")
 Test.show(15)

 val predictions = model.transform(Test)
predictions.show(5) >

让我知道。