过程:
- 用户选中复选框以与客户帐户共享文件
- 将复选框值与客户文件夹中存储在 txt 文件中的数组进行比较
- 通过使用 array_merge() 合并到一个数组中来比较数组
- 使用 array_unique() 消除重复项
- 写入 txt 文件的新数组
问题:
如果我的文本文件已包含以下数据:(表示文本文件行的数字)
- M HTH A277 框架关闭 STD 规格 02-01-12.pdf
- M HTH A277 框架 STD 规格 02-01-12.pdf
- M HTH选项可以价目表 02-02-2012.xls
然后,我尝试共享更多文件,包括已共享的文件。我的新文本文件如下所示:(数字表示文本文件行)
- M HTH A277 框架关闭 STD 规格 02-01-12.pdf
- (空白)
- M HTH A277 框架 STD 规格 02-01-12.pdf
- (空白)
- M HTH选项可以价目表 02-02-2012.xls
- (空白)
- (空白)
- M HTH A277 框架关闭 STD 规格 02-01-12.pdf
- M HTH A277 框架 STD 规格 02-01-12.pdf
- M HTH选项可以价目表 02-02-2012.xls
- 谷溪庄园 - 2010.pdf
上面的值是我正在处理的确切值。我试图尽可能彻底地解释这个解释,这可能会使事情变得混乱。如果有人能为我提供任何建议,他们将不胜感激。提前谢谢。这是我到目前为止的代码:
代码:
$arr = $_POST['checked'];
$cust = $_POST['custname'];
if ($cust != ""){
$myFile = "CONTA.txt";
//If file exists get previous array from file
if (file_exists("customer/" . $cust . "/" . $myFile)) {
$fh = fopen("customer/" . $cust . "/" . $myFile, 'r') or die("");
while (!feof($fh) ) {
$compare[] = fgets($fh);
}
fclose($fh);
//Combine checkbox array with previous array & eliminate duplicates
$combined = array_unique(array_merge($compare,$arr));
}
else
{
//Since no previous file or array existed. Just use current checkbox array.
$combined = $arr;
}
//Input array into file
$fh = fopen("customer/" . $cust . "/" . $myFile, 'w') or die("can't open file");
foreach ($combined as $value) {
fwrite($fh, $value . "n");
}
echo "<span class='message'>Items shared successfully!</span>";
fclose($fh);
}
}
,问题似乎是""字符。 每行的末尾都有一个新行,当您比较一行具有换行符的行和没有换行符的同一行时,它们就不一样了。 我会通过回显 fgets 的每一行来确认这一点。 如果它们是换行符,那么您就知道您正在获取换行符。
编辑:
我会尝试把
修剪(fgets($fh))
默认情况下,它应该去除换行符
装饰规格