1

「コード」と「説明」を含む .csv ファイルがあります。.csv を検索したいのですが、重複する「コード」が見つかった場合は、行全体を置き換えます。

すなわち。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

あなたの例では、区切り記号は [タブ] (',' ではありません) です。

 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 に答える