PHP如果Statement无法正常工作,则不为null

时间:2011-06-28 21:51:04

标签: php if-statement

我很难理解为什么下面的if语句总是会导致错误。我正在创建一个函数,它将测试到脚本的传入连接,该脚本将拒绝某些机器人所做的连接。

在下面的测试中,在应用if逻辑时,我期待为TRUE,因为数组$value$test值应该匹配...导致NOT NULL?

$bots = array(0 => "PaperLiBot", 1 => "TweetmemeBot", 2 => "Appsfirebot", 3 => "PycURL", 4 => "JS-Kit", 5 => "Python-urllib");

$test = strtolower("PaperLiBot");


foreach($bots as $value)
{   
    $i = strtolower(strpos($value, $test));

    if ($i != NULL)
    {
        echo "Bot is found";
        exit;
    }else
    {
        echo "not found";
    }

}

4 个答案:

答案 0 :(得分:3)

我认为你正在努力实现这个目标

foreach($bots as $value)
{   
    $i = strpos(strtolower($value), $test);

    if ($i !== false){
        echo "Bot is found";
        exit;
    }else{
        echo "not found";
    }

}

答案 1 :(得分:1)

你想写:

if(stristr($value, $test)){
 // found
}else{
 // not found

}

答案 2 :(得分:0)

PHP中的

null可以互为类型转换为'0','',''等...您需要使用严格比较来检查基于0的数组索引:

if ($i !== NULL) { 
 ...
}

注意不等式运算符中的额外=。它强制PHP比较类型AND值,而不仅仅是值。比较值时,PHP会为了使测试工作而进行类型转换,这意味着null == 0为真,但null === 0为假。

答案 3 :(得分:0)

检查变量是否设置为NULL的正确方法是:

if(!is_null($var)){
    [my code]
}

strpos返回一个布尔值,而不是NULL值。

如果您不确定变量的内容,可以随时使用简单的

进行调试
var_dump($var);