2017-07-06 75 views
0

我需要找到重複的文件並將它們寫入txt文件中。我幾乎得到它,但我無法解決4件事。PHP檢查DIR中的重複文件並將它們寫入txt

  1. 每個新值都必須寫成一個新行。
  2. 數組必須是[fileName] =>「fileHash」(Watch p.3)
  3. 寫入txt文件名(鍵),而不是fileHash。
  4. 爲什麼$文件的前2個值是。和..?它們等於一個空字符串。

    //get a files array 
    $files = scandir(__DIR__); 
    
    //key=value 
    $result = array_combine($files, $files); 
    
    //get an array of filee hashes 
    $hashArr = []; 
    foreach ($result as $file) { 
        $file = md5_file($file); 
        array_push($hashArr, $file); 
    } 
    
    //search for duplicates 
    $arr_unique = array_unique($hashArr); 
    $arr_duplicates = array_diff_assoc($hashArr, $arr_unique); 
    
    //write duplicates in a file 
    $result = "values.txt"; 
    file_put_contents($result,$arr_duplicates); 
    

在 「values.txt」 我有

a9f238ec88777a129c1b6ad4ceeef77c57c90c48a63620442e5bddb2764585cb

我試圖做這樣的事情

$fp = fopen('values.txt', 'a+'); 
fwrite($fp, $arr_duplicates."\r\n"); 
fclose($fp); 
//or 
file_put_contents($result,$arr_duplicates . "\r"); 

,但它在我的TXT中寫入「數組」而不是值。 任何幫助將不勝感激。

+0

該文件。指向當前目錄並且..指向上面的目錄。您可以將其用於導航。 – killexe

+0

'array'是一個**數組**而不是一個字符串。使用'serialize()'將數組轉換爲一個字符串。 – Richard

+0

謝謝你們,我知道了 – myjuneisforyou

回答

1
//get a files array 
$files = scandir(__DIR__); 

//key=value no need 
// $result = array_combine($files, $files); 
unset($files[array_search('.',$files)],$files[array_search('..',$files)]); 

//get an array of filee hashes 
$hashArr = []; 
    foreach ($files as $file) { 
    $fileHash = md5_file($file); 
    $hashArr[$file] = $fileHash; 
// array_push($hashArr, $file); 
} 

//search for duplicates 
$arr_unique = array_unique($hashArr); 
$arr_duplicates = array_diff_assoc($hashArr, $arr_unique); 
//write duplicates in a file 
$fp = fopen('values.txt', 'a+'); 
foreach($arr_duplicates as $fileName=>$fileHash) { 
    fwrite($fp, $fileName."\r\n"); 
} 
fclose($fp); 
+0

太好了,非常感謝 – myjuneisforyou

0

@Jasbeer拉瓦爾

$ fileHash = md5_file($文件); //不適合我。

$ fileHash = md5_file($ dir。$ file); //作品。

and $ hashArr = array(); // for php < 5.4 $ hashArr = [];

相關問題