1

我有一个带有“代码”和“描述”的 .csv 文件。我想搜索 .csv,如果找到重复的“代码”,请替换整行。

IE。csv 文件:

code          description
STA-101       A great product
STA-102       Terrible Product

如果要找到“STA-102”,请将描述替换为某些内容,即:

code          description
STA-101       A great product
STA-102       OK Product

这些是动态的,所以我需要一个 if 语句。这可以使用fgetcsv()吗?
以下内容不起作用,但我现在只知道:

$row = 1;
if (($handle = fopen("formTest.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        $row++;
        for ($c=0; $c < $num; $c++) {
            if ($data[$c] = "STA-102") {
          $data[$c] = "OK Product"; }
            echo $data[$c] . "<br />\n";
        }

    }
    fclose($handle);
}

为了写入我的文件开始,我有:

$code = $_POST['CODE'];
$description = $_POST['DESC']; 

if ($_POST) {
    $csvData = $code . "," . $description. "\n";
    $fp = fopen("formTest.csv","ab"); 

    if($fp){
    fwrite($fp,$csvData);
    fclose($fp); }
}

如果需要,我如何将上面的内容与 if 语句合并以覆盖代码?

4

1 回答 1

2

在您的示例中,分隔符是 [tab] (不是 ',')。

 while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {

在开始时:

$res = "";

也代替

for ($c=0; $c < $num; $c++) {
    if ($data[$c] = "STA-102") {
        $data[$c] = "OK Product"; }
    }
    echo $data[$c];

我想你想要

if ($data[0] == "STA-102") {
    $data[1] = "OK Product";
}
$res .= implode('\t', $data) . "\n";

在 fclose($handle); 之后

$handle = fopen("formTest.csv", "w"));
fwrite($handle, $res);
fclose($handle);
于 2012-03-28T17:16:11.017 回答