Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP IF不具有多个和_Php_If Statement - Fatal编程技术网

PHP IF不具有多个和

PHP IF不具有多个和,php,if-statement,Php,If Statement,我的if-else语句有一个逻辑问题 如果URL与newurl不相同,并且如果newurl不是数组,并且如果找不到newurl,则执行此操作 这不起作用,我不知道这里的逻辑哪里错了 NEWURL是数组,即,但脚本仍然采用if而不是else 更清楚地说,该值仅为单词数组。很抱歉给你带来了困惑 if (($url != $newurl) && ($newurl != "Array") && ($newurl != 'notfound')) { dothis } el

我的if-else语句有一个逻辑问题

如果URL与newurl不相同,并且如果newurl不是数组,并且如果找不到newurl,则执行此操作

这不起作用,我不知道这里的逻辑哪里错了

NEWURL是数组,即,但脚本仍然采用if而不是else

更清楚地说,该值仅为单词数组。很抱歉给你带来了困惑

 if (($url != $newurl) && ($newurl != "Array") && ($newurl != 'notfound')) { dothis } else{ dothat }
你需要的是数组

if (($url != $newurl) && !is_array( $newurl ) && ($newurl != 'notfound')) { dothis } else{ dothat }
PHP在回显时将变量的类型作为字符串返回,但不能将变量作为字符串进行比较,因为它不是字符串。它将与内容为“Array”的字符串相同。因此,对于每种类型的函数,都有一个。是数组、是字符串等。。。或者您可以使用gettype($var)以字符串的形式获取类型


最好为此做一个新的函数,如果您检查$newUrl的类型,这将使您的代码易于阅读:

function isValidUrl($newUrl, $url) {
        return (($url !== $newUrl) && !is_array($newUrl) && ($newUrl !== 'notfound'));
    }

if (isValidUrl($newUrl, $url)) {
    dothis 
} else{ 
    dothat 
}
第二,如果您不仅检查相等性,还检查标识,那么使用“!=”就更好了使用“!==”这也验证了类型

但是,如果您想检查url名称是否匹配“Array”作为字符串而不是类型,那么您的代码应该可以工作。 如果要检查类型或新URL,应使用is_array()


如果您想看到干净的代码,最好将整个验证命名为“isValid”,然后检查一下

阵列
阵列
是我强烈建议使用的不同东西!==而不是!=。如果开发人员检查$newUrl的类型并匹配为类型数组,那么您的解决方案几乎是正确的。但是错了,如果他查到那个名字的话。这个问题没有得到适当的澄清。