2015-05-06 49 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/ –