我的if语句中出现意外的T_BOOLEAN_AND错误

我的if语句中出现意外的T_BOOLEAN_AND错误

问题描述:

I have the following IF statement:

if (strpos($_SERVER['REQUEST_URI'], '/dev/mahjong/mahjong.php') === strlen($_SERVER['REQUEST_URI']) - strlen('/dev/mahjong/mahjong.php') ) {
    $style = "display: inline";
}
else {
  $style = "display: none";
}

This works great. Now I wanted to show a Facebook login screen when $style = "display:inline";

So I figured, I make another IF with an AND, so IF display = inline AND user is NOT logged in, set $fb_login = "display: inline";

I've cooked up this code:

if (strpos($_SERVER['REQUEST_URI'], '/dev/mahjong/mahjong.php') === strlen($_SERVER['REQUEST_URI']) - strlen('/dev/mahjong/mahjong.php') ) {
    $style = "display: inline";
}
else {
  $style = "display: none";
}

if ($style = "display: inline") && (!$user)) {
    $fb_login = "display: inline";
}
else {
    $fb_login = "display: none";
}

Problem is I get an error with this: Parse error: syntax error, unexpected T_BOOLEAN_AND

Also tried to use AND instead of && but it gave the same result. What am I doing wrong here?

我有以下IF语句: p>

  if(strpos)  ($ _SERVER ['REQUEST_URI'],'/ dev / mahjong / mahjong.php')=== strlen($ _ SERVER ['REQUEST_URI']) -  strlen('/ dev / mahjong / mahjong.php')){\  n $ style =“display:inline”; 
} 
else {
 $ style =“display:none”; 
} 
  code>  pre> 
 
 

这很有用 。 现在我想在 $ style =“display:inline”; code> p>

时显示一个Facebook登录界面所以我想,我用AND制作另一个IF,所以 IF display = inline AND user未登录,设置 $ fb_login =“display:inline”; code> p>

我已经编写了这段代码: p >

  if(strpos($ _ SERVER ['REQUEST_URI'],'/ dev / mahjong / mahjong.php')=== strlen($ _ SERVER ['REQUEST_URI']) -  strlen(  '/dev/mahjong/mahjong.php')){
 $ style =“display:inline”; 
} 
else {
 $ style =“display:none”; 
} 
 
if($  style =“display:inline”)&&  (!$ user)){
 $ fb_login =“display:inline”; 
} 
else {
 $ fb_login =“display:none”; 
} 
  code>  pre> 
  
 

问题是我收到错误:解析错误: strong>语法错误,意外T_BOOLEAN_AND p>

还尝试使用AND代替&& ; 但它给出了相同的结果。 我在这里做错了什么? p> div>

  • Your assignment operator (=) should be a comparison operator (==)
  • There was an unneeded parenthesis ())
  • I also removed some unnecessary brackets around the 2nd condition
if ($style == "display: inline" && !$user) {
    $fb_login = "display: inline";
}

You are missing a (

if (($style == "display: inline") && (!$user)) {

You're missing a bracket on this line

if ($style = "display: inline") && (!$user)) {

It should be

if (($style == "display: inline") && (!$user)) {

But you should ask yourself if you should approach this a different way. The code you've got is very specific to the output and you might be better for maintainability reasons doing your logic first then your display. Something like this:

if (strpos($_SERVER['REQUEST_URI'], '/dev/mahjong/mahjong.php') === strlen($_SERVER['REQUEST_URI']) - strlen('/dev/mahjong/mahjong.php') ) {
    $mahjongRequest = true;
}
else {
    $mahjongRequest = false;
}

if ($mahjongRequest && (!$user)) {
    $fb_login = true;
}
else {
    $fb_login = false;
}

Also, you might want to review your initial IF statement. It's not entirely clear to me what you're trying to achieve and there may be a much simpler, more-readable way to do it.