PHP - in_array()问题 - 无法正确检查

时间:2015-05-06 15:34:16

标签: php

我有一个名为$sum的数组。在$sum中,我在$files中添加了每个文件的md5哈希值。如果那个数组不包含当前$hash,我希望它做某事(比如说它不包含它)。

$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语句不能正常工作?我似乎无法理解为什么它不起作用。提前谢谢。

4 个答案:

答案 0 :(得分:1)

在if之前添加新的哈希值,因此它始终为true。只是改变他们的位置

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

答案 1 :(得分:1)

来自PHP Doc

  

如果在数组中找到了针,则返回TRUE,否则返回FALSE。

您的IF声明错误。

无论如何,如果你之前添加哈希值,那么IF将永远为TRUE:我没有得到你想要做的......:)

答案 2 :(得分:0)

如果您正在检查是否存在值,则逻辑会反转

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

答案 3 :(得分:-1)

搜索== TRUE,而不是== FALSE