0

プロセス:

  1. ユーザーがチェックボックスをオンにして、顧客アカウントとファイルを共有します
  2. チェックボックスの値は、customersフォルダーのtxtファイルに保存されている配列と比較されます。
  3. array_merge()を使用して1つの配列にマージすることにより、配列が比較されます。
  4. array_unique()を使用して重複を排除します
  5. txtファイルに書き込まれた新しい配列

問題:

テキストファイルにすでに次のデータが含まれている場合:(テキストファイルの行を表す数字)

  1. MHTHA277フレームオフSTD仕様02-01-12.pdf
  2. STD仕様のMHTHA277フレーム02-01-12.pdf
  3. MHTHオプション缶価格表02-02-2012.xls

次に、すでに共有されているファイルを含め、さらに多くのファイルを共有しようとします。私の新しいテキストファイルは次のようになります:(テキストファイルの行を表す数字)

  1. MHTHA277フレームオフSTD仕様02-01-12.pdf
  2. (空欄)
  3. STD仕様のMHTHA277フレーム02-01-12.pdf
  4. (空欄)
  5. MHTHオプション缶価格表02-02-2012.xls
  6. (空欄)
  7. (空欄)
  8. MHTHA277フレームオフSTD仕様02-01-12.pdf
  9. STD仕様のMHTHA277フレーム02-01-12.pdf
  10. MHTHオプション缶価格表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);
    }

}
4

1 に答える 1

0

私には、問題は「\n」文字のように見えます。各行の最後に新しい行があり、改行文字を含む1つの行とそうでない同じ行を比較すると、同じではありません。fgetsから各行をエコーすることでこれを確認します。それらが改行されている場合は、改行文字を取得していることがわかります。

編集:デフォルトで trim(fgets($ fh))
を入れてみると 、改行文字のトリム仕様が削除されます


于 2012-04-08T03:36:57.320 に答える