我有以下字符串,其中包含域的部分字符串。
$scheme="http";
$host="example.com";
$filename="demo.php";
$request_uri="/folder/demo.php";
$ host和$ filename变量其中一个是可选的。 我使用以下代码检查字符串是否包含正确的值,打印成功的messege,否则打印错误消息
if($scheme ="http" OR $host ="example.com" & $filename ="demo.php" & $request_uri ="/folder/demo.php")
{echo "Sucessful";}
else
{echo "Fail";}
它没有按预期工作,我得到"成功"每次 。我认为在NO语句中忽略了AND操作符。
任何想法?
答案 0 :(得分:3)
if( $scheme == "http"
&& ($host == "example.com" || $filename == "demo.php")
&& $request_uri == "/folder/demo.php"
) {
echo "Sucessful";
} else {
echo "Fail";
}
&&
和||
是PHP和AND的OR运算符。另外=
为变量赋值,而不是比较相等。使用==
或===
进行比较。
此外,您的书面声明似乎与您的代码不符......所以我稍微更改了逻辑并添加了()以对逻辑进行分组。从编写它听起来像$ scheme和$ request_uri测试是必需的,并且需要$ host或$ filename。您的代码似乎与此不匹配。如果我误解了你的书面要求,请改变&& amp;和||和()你需要的。请注意,将长布尔表达式分解为多行并使用()来分组逻辑通常有助于正确实现。