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

时间:2012-04-08 03:11:52

标签: php text-files array-merge array-unique

流程:

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

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

    1. M HTH A277 Frame Off STD Specs 02-01-12.pdf
    2. M HTH A277 Frame on STD Specs 02-01-12.pdf
    3. M HTH Option Can Price List 02-02-2012.xls
    4. 然后我尝试共享更多文件,包括已经共享的文件。我的新文本文件如下所示:(表示文本文件行的数字)

      1. M HTH A277 Frame Off STD Specs 02-01-12.pdf
      2. (空白)
      3. M HTH A277 Frame on STD Specs 02-01-12.pdf
      4. (空白)
      5. M HTH Option Can Price List 02-02-2012.xls
      6. (空白)
      7. (空白)
      8. M HTH A277 Frame Off STD Specs 02-01-12.pdf
      9. M HTH A277 Frame on STD Specs 02-01-12.pdf
      10. M HTH Option Can Price List 02-02-2012.xls
      11. Valley Creek Estates - 2010.pdf
      12. 上面的值是我正在处理的确切值。我试图尽可能彻底地解释这可能会使事情变得混乱。如果有人能提供任何建议,我们将不胜感激。提前致谢。这是我到目前为止所获得的代码:

        代码:

        $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);
            }
        
        }
        

1 个答案:

答案 0 :(得分:0)

对我而言,问题似乎是“\ n”字符。每一行在末尾都有一个新行,当你比较一行具有换行符和同一行而不是它们不相同时。我会通过回显fgets中的每一行来确认这一点。如果它们被断线,那么你知道你正在获得新的线条字符。

编辑:
我会尝试把
    修剪(与fgets($ FH))
默认情况下,它应该删除换行符字符
trim specs