【问题标题】:Simple PHP If Statement error简单的 PHP If 语句错误
【发布时间】:2025-12-15 08:35:01
【问题描述】:

我有一个非常简单的 IF 语句...

if ($key == "listingURL" or 
     $key == "interiorColor" or 
     $key == "engine" or 
     $key == "transmission" or 
     $key == "stockNumber" or 
     $key == "VIN") {
          // Do thing
}

但是我收到一个错误...

[23-Apr-2015 13:12:01 UTC] PHP 解析错误:语法错误,意外 第 xxx 行 xxx 中的 T_VARIABLE

这是哪一行...

 $key == "stockNumber" or

OR 的最大数量是否有限制,或者我错过了什么正盯着我的脸?

【问题讨论】:

  • 一个建议:使用 in_array 或其他东西来检查一个变量的值与多个值: $values = array( 'listingURL', 'interiorColor'); if ( in_array( $key, $values) ) { //做一些事情
  • 或者你可以使用||代替或
  • 使用十六进制编辑器。 <FEFF> 里面有一个杂散的 BOM。
  • @SunilPachlangia,之前尝试过,但没有区别!
  • @SoWizardly 对我关于插件的回答进行了额外的编辑

标签: php


【解决方案1】:

“OR 的最大数量是否有限制,或者我错过了什么正盯着我的脸?”

不,没有。原因是因为你有一个隐藏角色:

$key == "transmission" or ? <= right there

&amp;#65279;

作为 Unicode ZERO WIDTH NO-BREAK SPACE 字符。

重写:

if ($key == "listingURL" or 
     $key == "interiorColor" or 
     $key == "engine" or 
     $key == "transmission" or
     $key == "stockNumber" or 
     $key == "VIN") {
          // Do thing
}

旁注:

来自comments

时间一到,我会尽快确认为正确答案!十分感谢你的帮助。我使用 Sublime Text 3,有什么简单的方法可以检测这些隐藏字符吗? – SoWizardly 19 分钟前

对于Notepad++,有一个插件叫做:HEX-Editor

您可以通过以下方式下载它:扩展 -> 插件管理器 -> 可用。只需选中 HEX-Editor 的组合框,然后单击安装。在此之后,您可以将文件视图更改为十六进制。

对于Sublime Text,还有一个plugin,作用相同。

【讨论】:

  • 时间一到,我会尽快确认为正确答案!十分感谢你的帮助。我用的是 Sublime Text 3,有什么简单的方法可以检测这些隐藏字符吗?
  • @SoWizardly 好吧,我使用 Notepad++,它是作为 Unicode 出现的。我从未使用过 Sublime,但其中可能有一个查看选项。
  • @BeatAlex 很奇怪,我从普通记事本开始,注意到行尾的小方块,然后进入 Notepad++ 和我的 HTML 页面编辑器进行确认。
  • @SoWizardly 我发现了这个 Q&A *.com/q/20356784packagecontrol.io/packages/Unicode%20Character%20Highlighter*.com/a/20999477 - 在谷歌搜索“如何使用 sublime 检测 unicode 字符”时有更多链接。我希望它有所帮助。
  • @Fred-ii- 感谢您的所有帮助!我在让 .csv 文件导入器工作时遇到了一些问题,看起来那个字符来自我的复制+粘贴...这让我意识到这是导致问题的原因...我最终找到了一个不错的 PHP从字符串中删除这些字符的脚本,现在一切正常!
【解决方案2】:

当我在其他编辑器中复制时,我得到了这个 在库存号附近删除它?

if ($key == "listingURL" or 
     $key == "interiorColor" or 
     $key == "engine" or 
     $key == "transmission" or 
     $key == "stockNumber" or ? <=
     $key == "VIN") {
          // Do thing
}

【讨论】:

    【解决方案3】:

    试试这样的

    $arr = array("listingURL","interiorColor","engine","transmission","stockNumber","VIN");
    if(in_array($key, $arr))
    {
       // do something 
    } 
    

    这是更有效的做事方式

    【讨论】:

      【解决方案4】:

      评论副本: 一个建议:使用 in_array 或其他东西来检查一个变量的值与多个值:

      $values = array( 'listingURL', 'interiorColor');
      if ( in_array( $key, $values) ) { //do stuff
      

      【讨论】:

        【解决方案5】:

        $key == "transmission" or ? &lt;= 中删除不需要的字符

        ? <=` This causes the problem
        

        【讨论】: