2015-05-06 93 views
-1

我有一個名爲$sum的數組。在$sum我在$files中添加每個文件的md5哈希。如果該數組不包含當前的$hash,我希望它做某件事(比如說它不包含它)。PHP - in_array()問題 - 無法正確檢查

$sum = array(); 

foreach($files as $file) { 
    $hash = md5_file($file); 
    $sum[] = $hash; 
    if(in_array($hash, $sum) == FALSE) { 
      echo $hash . ' is not in the array'; 
    } 
} 

如果我檢查$sum內容(通過改變if語句的$hash像「12345」的東西是隨機的),我可以看到被添加到陣列中的哈希值。

爲什麼if語句不能正常工作?我似乎無法圍繞爲什麼它不起作用。提前致謝。

+0

刪除'== FALSE'一部分。因爲如果in_array()已經在數組中,它已經返回true – Rizier123

回答

1

你面前,如果增加新的哈希值,所以它總是如此。只要改變自己的位置

if(in_array($hash, $sum) == FALSE) { 
    echo $hash . ' is already in the array'; 
} 
$sum[] = $hash; 
+0

當然是啊。我完全沒有檢查這個..謝謝你告訴我! – MortenMoulder

+0

很高興幫助:) – splash58

-1

搜索== TRUE,不== FALSE

+0

「爲什麼if語句不能正常工作?」它回答了這個問題。 – fbas

0

如果你正在檢查一個值,那麼你的邏輯是相反的

if(in_array($hash, $sum)) { //means the item is in the array 
     echo $hash . ' is already in the array'; 
} 
1

的存在從PHP Doc:如果針在發現

返回TRUE該數組,否則爲FALSE。

您的IF語句錯誤。

無論如何,如果你前行添加哈希,中頻永遠是TRUE:我不明白你正在嘗試做的... :)

+1

我把我的整個問題從「在陣列中」改爲「不在陣列中」,我忘記了改變什麼。我讀了兩遍,但沒有發現錯誤。我編輯了這篇文章,並認爲這是因爲'$ sum = $ hash'正在if語句之前被設置...愚蠢的我。 – MortenMoulder

+0

沒問題。 ;)下次試試Rubber Duck http://www.rubberduckdebugging.com/ –