array_search返回错误的值

时间:2014-10-09 23:34:51

标签: php

我手动实施array_unique功能。我这样做:

class Prelude {
    public static function unique($xs) {
        $arr = array();
        foreach($xs as $atom) {
            if (!array_search($atom, $arr)) {
                var_dump($arr); 
                echo "<br>";
                array_push($arr, $atom);
            }
        }
        return $arr;
    }
}

Prelude :: unique(array(1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 6, 7, 8));

$atom1时,我注意到效果非常好,除了。在我的foreach循环中,当我检查数值是否已经包含在数组中并且我要检查的值是1时,它只是忽略并告诉我数组中没有1。这是我的输出:

http://ideone.com/HpWtIl

这是我检查1中是否有[1, 1, 1]的时候:

http://ideone.com/eF3gcS

有人能解释一下吗?

1 个答案:

答案 0 :(得分:0)

简单,马塞洛。

您正在使用!进行检查,这是非严格检查。你必须检查!== FALSE。 1为TRUE。