2010-04-15 82 views
3

我的工作从PHP的书为例,我得到第8行的错误与此代码意外T_ELSE错误在PHP

<?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; 


?> 

回答

6

尝试:

$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; 

两件事情:

  1. 你在你的if语句的结尾有一个分号。这意味着随后的大括号是一个始终执行的本地块。这导致了一个问题,因为后来你有一个else语句没有附加到if语句;和

  2. "$agent"是不必要的,不建议。只需通过$agent即可。

+0

辉煌,感谢您的解释! – Jacksta 2010-04-15 03:32:11

1

为什么你在这里有一个分号? if (preg_match("/MSIE/i", "$agent"));这里else if (preg_match("/Mozilla/i", "$agent"));

15

if声明结束时还有;

错误原因:

if(...) ; 
{ 
... 
} 

造成任何语法错误作为if身体及以下块总是被执行。但

if(...) ; 
{ 
    // blk A 
} else { 
... 
} 

会导致Unexpected else语法错误,因为if像以前那样具有空体,随后是另一块blk A这是不是如果的身体。现在,当一个else如果发现该块后,它不能匹配任何if导致此错误。如果我们代替块的倒是statement(S)同样会发生:

if(...) ; 
do_something; 
else { 
... 
} 
+1

优秀彻底的分析! – timdev 2010-04-15 03:35:30

3

从线的一端与“如果”,在他们删除分号。

相关问题