繁体   English   中英

如何使用php从csv列中删除一些值

[英]How to delete some values from a csv column with php

您好,我在excel中有这种数据格式。

A              B        C
php           Html     Laravel
mysql         Css      Wordpress
javascript    jquery   Codeigniter

我将此另存为csv,并得到逗号分隔的值。 我需要从C列中删除一些项目。例如,我需要删除Laravel和Codeigniter,而其他数据不变。 我该怎么做? 我已经尝试过使用此代码。 但这会删除指定值的整个行。

$table = fopen('tech.csv','r');
$temp_table = fopen('table_temp.csv','w');

$id = 'Laravel'; // the name of the column you're looking for

while (($data = fgetcsv($table, 1000)) !== FALSE){
    if(reset($data) == $id){ // this is if you need the first column in a row
        continue;
    }
    fputcsv($temp_table,$data);
}
fclose($table);
fclose($temp_table);
rename('table_temp.csv','tech.csv');

因此,当我运行此命令时,它不仅会删除“ Laravel”,还会删除整个行,即php,HTML,Laravel。

如何在不损害csv文件中其他数据的情况下从列中搜索和删除多个值?

那是因为您要告诉PHP如果该行包含Laravel,则continue (跳过fputcsv()代码行),因此该行根本不会写任何行

$table = fopen('tech.csv','r');
$temp_table = fopen('table_temp.csv','w');

$names = ['Laravel', 'Codeigniter']; // The values that you're looking to remove
                                     //     (as an array of values)
while (($data = fgetcsv($table, 1000)) !== FALSE){
    $data = array_diff($data, $names);
    fputcsv($temp_table,$data);
}
fclose($table);
fclose($temp_table);
rename('table_temp.csv','tech.csv');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM