【问题标题】:How to delete some values from a csv column with php如何使用php从csv列中删除一些值
【发布时间】:2015-04-30 15:15:27
【问题描述】:

您好,我在 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 csv


    【解决方案1】:

    那是因为如果该行包含 Laravel,您将告诉 PHP 到 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');
    

    【讨论】:

    • 谢谢。它工作得很好。感谢您的帮助。
    猜你喜欢
    • 2013-04-12
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多