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