简单PHP如果语句错误

时间:2015-04-23 13:20:32

标签: php

我有一个非常简单的IF声明......

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

但我收到了错误......

  

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

这是哪一行...

 $key == "stockNumber" or

OR的最大数量是否有限制,或者我是否遗漏了一些直接盯着我的东西?

5 个答案:

答案 0 :(得分:23)

  

“OR的最大数量是否有限制,或者我错过了正确地看着我的东西?”

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

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

enter image description here

哪个是&#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的插件。

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

对于Sublime Text,还有一个plugin,它也是如此。

答案 1 :(得分:2)

当我在其他编辑器中复制时,我得到了这个  将它移到库存号码附近? &LT =

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

答案 2 :(得分:0)

尝试这样的事情

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

这是更有效的做事方式

答案 3 :(得分:0)

评论副本: 一个建议:使用in_array或其他方法根据多个值检查变量的值:

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

答案 4 :(得分:0)

$key == "transmission" or ? <=

中删除不需要的字符
? <=` This causes the problem