PHP:检查csv文件中是否存在该值

时间:2016-04-23 07:59:57

标签: php

我在csv文件中有一个客户列表:

Name,Credited
ABC,Y
BCD,Y
XYZ
ABC

我的任务是检查列表中是否存在客户端:

  • 如果是,请检查他是否已被记入贷方。
  • 如果是,请从列表中删除该名称。

我已经开始编写代码了,但不知道如何才能完成我的任务。

//Store the file in array
 $fcsv = file($files); 
 foreach($headers as $header) {
    // Push headers to new array.
    array_push($headings, strtolower(trim($header)));
  }

有人可以帮忙!!

提前致谢

2 个答案:

答案 0 :(得分:0)

以下是搜索给定csv文件中是否存在客户端名称的基本实现。

$client = "ABC";
$fcsv   = file('uploads/task.csv');

foreach ($fcsv as $key => $value) {
  $temp = explode(',', $value);
  if ($temp[0] == $client) {
    unset($fcsv[$key]);
  }
}

csv中的每一行,如果你使用var_dump()查看它会看起来像这样,

"Name,Credited"

如果您的csv文件包含多行,则此行

$fcsv = file('uploads/task.csv');

将返回行数组,使用loop使用explode(',', $value);拆分每行的内容,以便在每行的行中都有数据。

与上面的示例一样,您现在可以选择要查看的列,以便比较客户端存在和删除的位置。

答案 1 :(得分:0)

遍历文件中的所有行,并使用str_getcsv()将其解析为CSV行。然后检查第一列是否是客户名称,第二列是Y

$clients = file($files, FILE_IGNORE_NEW_LINES);
$deleted = false;
foreach ($clients as $index => $client_line) {
    $split = str_getcsv($client_line);
    if ($split[0] == $client) {
        if (isset($split[1]) && $split[1] == 'Y') {
            unset($clients[$index]);
            $deleted = true;
        }
        break; // Stop searching after we found the client
    }
}
// Rewrite the file if we deleted the client.
if ($deleted) {
    file_put_contents($files, implode("\n", $clients));
}