我在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)));
}
有人可以帮忙!!
提前致谢
答案 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));
}