У меня есть данные, как показано ниже в файле CSV. Зеленые линии - это то, что я хотел бы сохранить.
В принципе, если у кого-то есть одна строка, я хочу сохранить ее.
Если они имеют несколько строк, я хочу удалить любую, где 3-й столбец равен A - Fully Fit
.
После прохождения всего файла я хочу сохранить его поверх оригинала.
Я пытался написать код, но не уверен, что сегодня пятница, но логика ускользает от меня на данный момент.
Может быть только одна строка или десятки. Таким образом, если идентификатор имеет 1000 строк, я бы просто хотел удалить строки для этого идентификатора, где 4-й столбец «A - Полностью соответствует»
ОБНОВЛЕНИЕ
Этокод работает, но не уверен, что он самый оптимальный
// DECLARE ARRAYS
$a = Array();
$b = Array();
$c = Array();
// LOOP THROUGH FILE AND COLLECT DUPLICATES
if (($handle = fopen($filename, "r")) !== FALSE) {
while (($line = fgetcsv($handle, 4096, ",")) !== FALSE) {
$a[$line[1]][] = 'SHAKKA';
}
foreach ($a as $k=>$v) {
if (count($v)>1) {
$b[] = $k;
}
}
}
// IF A DUPLICATE THEN REMOVE ROWS THAT ARE 'A - Fully Fit'
if (($handle = fopen($filename, "r")) !== FALSE) {
while (($golly = fgetcsv($handle, 4096, ",")) !== FALSE) {
if (in_array($golly[1],$b) && $golly[3] == 'A - Fully Fit') {
}
else {
$c[] = $golly;
}
}
}
fclose($handle);
// WRITE THE FILE
$fp = fopen($filename, 'wa+');
foreach ($c as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);