【问题标题】:Simple PHP If / ElseIf statement not working [duplicate]简单的 PHP If / ElseIf 语句不起作用[重复]
【发布时间】:2013-01-26 14:47:31
【问题描述】:

我有一个非常简单的 if / elseif 语句,它无法按我的意愿工作......

        if ( $title == 'New York' )
        {
        echo 'This is New York';
        }
        elseif ( $title == 'California' )
        {
        echo 'This Is California';
        }
        else if ($title = "Chicago" )
        {
        echo 'This is Chicago';
        }
        else if ($title = "Seattle" )
        {
        echo 'This is Seattle';
        }
        else
        {
        echo 'No Match Found';
        }

如果 $title 设置为 New York 或 California,则脚本有效,但如果设置为 Chicago、Seattle 或其他地方,则仅显示“This Is California”

我做错了什么?

【问题讨论】:

  • 应该 elseifelse if 还是反之亦然?
  • 请仔细阅读您的代码。 $title = 'Chicago'(和其他人)几乎毫无疑问应该是$title == 'Chicago'(或者更好的是$title === 'Chicago')。
  • 始终使用== 而非= 进行比较。
  • 你有时写 'elseif' 有时写 'else if' 并且有时使用 '"' 或 ''' 来检查一个字符串是否正常?' => 仅用于单词“ =>还检查变量
  • 我会推荐使用 switch : php.net/manual/en/control-structures.switch.php (在你的情况下更具可读性)

标签: php if-statement


【解决方案1】:

小心===。我认为这就是问题所在。

【讨论】:

  • 查看post 了解一个简单的方法来阻止这种情况再次发生,即使是偶然的。
【解决方案2】:

对于最后一种情况,您使用的是= 而不是==

这将永远是正确的,因为这是一个分配。

将它们替换为==,您就可以开始了。

【讨论】:

  • 完美,总是显而易见的:)
【解决方案3】:
if ( $title == 'New York' )
        {
        echo 'This is New York';
        }
        elseif ( $title == 'California' )
        {
        echo 'This Is California';
        }
        else if ($title == "Chicago" )
        {
        echo 'This is Chicago';
        }
        else if ($title == "Seattle" )
        {
        echo 'This is Seattle';
        }
        else
        {
        echo 'No Match Found';
        }

你必须小心==,因为=在每次比较的if条件下都不能正常工作

使用 == 表示字符串,使用 === 表示数字

【讨论】:

  • 你应该解释什么是错误的,而不是仅仅发布代码。
  • 对不起,我没有解释我正在编辑我的答案,我只是输入错误。
  • "= will not work in if condition" 实际上=if() 允许的条件下工作得很好。此外,== 不仅适用于字符串,=== 不仅适用于数字,它们适用于任何类型的比较。后者只是做了严格的比较。 -1
  • 好吧,不如试试这个 if(1 = 1) { echo 'hi'; }
  • 您需要阅读 PHP 手册,尤其是 pagepage,以便您更好地理解为什么您的答案解释具有误导性和不正确性。无论如何,我不会再争论了。
【解决方案4】:

在您的代码示例中,'Chicago' 和 'Seattle' 被分配而不是比较。 “=”与“==”

对于这样的代码,我建议您检查switch 语句。

http://php.net/manual/en/control-structures.switch.php

【讨论】:

    【解决方案5】:

    将 = 替换为 ==

        if ( $title == 'New York' )
        {
          echo 'This is New York';
        }
        else if ( $title == 'California' )
        {
          echo 'This Is California';
        }
        else if ($title == "Chicago" )
        {
          echo 'This is Chicago';
        }
        else if ($title == "Seattle" )
        {
          echo 'This is Seattle';
        }
        else
        {
         echo 'No Match Found';
        }
    

    它的工作原理

    【讨论】:

      【解决方案6】:

      试试这个:

      if ( $title == 'New York' )
      {
         echo 'This is New York';
      }
      elseif ( $title == 'California' )
      {
         echo 'This Is California';
      }
      elseif ($title == "Chicago" )
      {
         echo 'This is Chicago';
      }
      elseif ($title == "Seattle" )
      {
         echo 'This is Seattle';
      }
      else
      {
         echo 'No Match Found';
      }
      

      【讨论】:

        【解决方案7】:

        不要使用=。你必须使用== (http://www.php.net/manual/en/language.operators.comparison.php)

        如下:

        else if ($title = "Chicago" )
        {
           echo 'This is Chicago';
        }
        else if ($title = "Seattle" )
        {
           echo 'This is Seattle';
        }
        else
        {
           echo 'No Match Found';
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多