我很难理解为什么下面的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";
}
}
答案 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)
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);