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

时间:2011-12-29 13:29:05

标签: php facebook if-statement

我有以下IF声明:

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";
}

这很有效。现在我想在$style = "display:inline";

时显示Facebook登录界面

所以我想,我用AND做了另一个IF,所以IF display = inline AND user没有登录,设置$fb_login = "display: inline";

我已经编写了这段代码:

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";
}

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

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

3 个答案:

答案 0 :(得分:3)

  • 您的赋值运算符(=)应该是比较运算符(==
  • 有一个不需要的括号()
  • 我还删除了第二个条件
  • 附近的一些不必要的括号
if ($style == "display: inline" && !$user) {
    $fb_login = "display: inline";
}

答案 1 :(得分:2)

您错过了(

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

答案 2 :(得分:2)

你错过了这一行的支架

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

应该是

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

但是你应该问问自己是否应该以不同的方式处理这个问题。您获得的代码非常特定于输出,您可能更容易出于可维护性的原因首先执行逻辑然后再显示您的逻辑。像这样:

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

此外,您可能希望查看初始IF语句。我并不完全清楚你想要实现的目标,并且可能有一种更简单,更易读的方法。