Jac*_*sta 3 php if-statement syntax-error
我正在研究一本来自php书籍的例子,并且在第8行使用此代码收到错误
<?php
$agent = getenv("HTTP_USER_AGENT");
if (preg_match("/MSIE/i", "$agent"));
{
$result = "You are using Microsoft Internet Explorer";
}
else if (preg_match("/Mozilla/i", "$agent"));
{
$result = "You are using Mozilla firefox";
}
else {$result = "you are using $agent"; }
echo $result;
?>
Run Code Online (Sandbox Code Playgroud)
cod*_*ict 14
有;
在结束if
发言.
错误原因:
if(...) ;
{
...
}
Run Code Online (Sandbox Code Playgroud)
会不会造成任何语法错误,因为身体if
是空的和下面的块总是被执行.但
if(...) ;
{
// blk A
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
会导致Unexpected else
语法错误,因为if
as之前有空体,后跟另一个块blk A
,而不是if的主体.现在当else
在块之后找到if 时,它无法与任何if
导致此错误的任何内容匹配.如果我们statement
代替一个区块,也会发生同样的情况:
if(...) ;
do_something;
else {
...
}
Run Code Online (Sandbox Code Playgroud)
尝试:
$agent = getenv("HTTP_USER_AGENT");
if (preg_match("/MSIE/i", $agent)) {
$result = "You are using Microsoft Internet Explorer";
} else if (preg_match("/Mozilla/i", $agent)) {
$result = "You are using Mozilla firefox";
} else {
$result = "you are using $agent";
}
echo $result;
Run Code Online (Sandbox Code Playgroud)
两件事情:
你的if子句末尾有一个分号.这意味着后续的开括号是一个始终执行的本地块.这导致了一个问题,因为后来你有一个else
没有附加到if
声明的声明; 和
这"$agent"
是不必要的,不推荐.简单地传入$agent
.