PHP仅在csv的一列中替换数据

时间:2016-04-28 17:11:45

标签: php csv replace

我只需要替换csv中第三列的值。而且没有其他地方。 我的csv的第3列只包含一个' J'或者是' N'我需要将它们改为' 5'或' 0'。但是现在我改变了所有在整个文件中找到的N和J#s。但我需要它只在第三列更新。

我使用以下代码打开并重写我的csv。但它总是将所有发现的信件写入5或0。

var a = 0;
var b = 0;
var c = 0;
var d = 0;
var total = a + b + c + d

$('.button').click(function(){
    a = 20;
});
$('button2').click(function(){
    b = 40;
});

$('.totaldiv').html("Your total is " + total)

3 个答案:

答案 0 :(得分:1)

很多方法,你可能会得到很多答案。这是一个:

int def(char ***B){
    *B = malloc(3 * sizeof(char *));
    for(i=0; i<2; i++){
        (*B)[i] = malloc(5 * sizeof(char));
    }
    ...
}

...

char **B;
...
def( &B );   /* Note the 'address-of' operator! */

答案 1 :(得分:1)

while ($data = fgetcsv($handle)) {

    $data[2] = str_replace(['J', 'N'], ['5', '0'], $data[2]);

    fputcsv($fp, $data);

    echo "<p> ".count($data)." Felder in Zeile ".$row++.": <br /></p>\n";
}

修改

  1. 我从!== FALSE移除了while部分,每次都不将结果与false进行比较,最后fgetcsv()将返回false并停止循环
  2. 折叠str_replace及其'arguments-arrays(仅限可读性)
  3. 已移除for循环,仅更改第3个([2])coloumn
  4. 摆脱了$num变量

答案 2 :(得分:0)

您正在遍历CSV的每一列。为什么不直接处理特定列?一个简单的三元可以做到这一点

$data[2] = ($data[2] == 'J') ? '5' : '0';