PHP If语句工作不正常,不为null


PHP If Statement not working correctly, not null

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

在下面的测试中,在应用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";
    }
}

我想你正在努力完成这个

foreach($bots as $value)
{   
    $i = strpos(strtolower($value), $test);
    if ($i !== false){
        echo "Bot is found";
        exit;
    }else{
        echo "not found";
    }
}

您想要写入:

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

PHP中的null是相互类型可转换为'0'、''、''等的。您需要使用严格的比较来检查基于0的数组索引:

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

注意不等式算子中额外的CCD_ 3。它强制PHP比较类型AND值,而不仅仅是值。在比较值时,PHP将根据自己的意愿进行类型转换,以使测试工作正常,这意味着null == 0为true,但null === 0为false。

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

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

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

如果你不确定变量的内容,你总是可以用一个简单的来调试它

var_dump($var);