Как удалить некоторые значения из столбца csv с помощью 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-файла?


person Saifullah Alam    schedule 30.04.2015    source источник


Ответы (1)


Это потому, что вы говорите PHP continue (перепрыгивая через fputcsv() строку кода), если строка содержит Laravel, поэтому он просто не запишет ни одну из этих строк.

$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');
person Mark Baker    schedule 30.04.2015
comment
Спасибо. Это работает просто отлично. Я ценю вашу помощь. - person Saifullah Alam; 01.05.2015