我的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?

  • 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.