array_unique不适用于从文本文件导入的文件名字符串



过程:

  1. 用户选中复选框以与客户帐户共享文件
  2. 将复选框值与客户文件夹中存储在 txt 文件中的数组进行比较
  3. 通过使用 array_merge() 合并到一个数组中来比较数组
  4. 使用 array_unique() 消除重复项
  5. 写入 txt 文件的新数组

问题:

如果我的文本文件已包含以下数据:(表示文本文件行的数字)

  1. M HTH A277 框架关闭 STD 规格 02-01-12.pdf
  2. M HTH A277 框架 STD 规格 02-01-12.pdf
  3. M HTH选项可以价目表 02-02-2012.xls

然后,我尝试共享更多文件,包括已共享的文件。我的新文本文件如下所示:(数字表示文本文件行)

  1. M HTH A277 框架关闭 STD 规格 02-01-12.pdf
  2. (空白)
  3. M HTH A277 框架 STD 规格 02-01-12.pdf
  4. (空白)
  5. M HTH选项可以价目表 02-02-2012.xls
  6. (空白)
  7. (空白)
  8. M HTH A277 框架关闭 STD 规格 02-01-12.pdf
  9. M HTH A277 框架 STD 规格 02-01-12.pdf
  10. M HTH选项可以价目表 02-02-2012.xls
  11. 谷溪庄园 - 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))
默认情况下,它应该去除换行符
装饰规格

相关内容

  • 没有找到相关文章

最新更新