PHP如果不相等(!=)和或(||)问题

时间:2016-01-26 16:09:29

标签: php

我有这段代码:

if(!in_array($value->TEXT,array('Prépresse{/CR}{/CR}','Prépresse')))

但不行,我也

$value

但我没有在Prépresse文字中包含该语句,我不想​​显示此字符串non-static method cannot be referenced from a static context

提前致谢

2 个答案:

答案 0 :(得分:5)

此语句将始终返回true

if (($value->TEXT) !='Prépresse{/CR}{/CR}' || ($value->TEXT) !='Prépresse')

,因为:

  • 如果($value->TEXT) =='Prépresse{/CR}{/CR}'($value->TEXT) !='Prépresse')
  • 如果($value->TEXT) =='Prépresse')($value->TEXT) !='Prépresse{/CR}{/CR}'

将行更改为:

if (($value->TEXT) !='Prépresse{/CR}{/CR}' && ($value->TEXT) !='Prépresse')

De Morgan's Laws的维基百科文章中对此进行了探讨,该文章指出:

  

这些规则允许通过否定来纯粹以彼此的方式表达连词和结合。

     

规则可以用英语表示:

     

结合的否定是否定的脱节   分离的否定是否定的结合。

     

或非正式地:

     

"不是(A和B)" "(不是A)或(不是B)"
  同时,
  " not(A或B)" "(不是A)和(不是B)" 相同。

答案 1 :(得分:0)

第一个代码应使用||代替$value->TEXT来模拟与第二个代码相同的结果。

此外,if($value->TEXT != 'Prépresse{/CR}{/CR}' && $value->TEXT !='Prépresse') 周围的括号是不必要的。

var_dump

如果他们不适合您,请尝试在$value->TEXT上执行[StringLength(100)] [Index("IX_EntidadCodigoHabilitacion", IsUnique = true)] public string CodigoHabilitacion { get; set; } ,看看它是否与您要匹配的字符串不同。