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


PHP if not equal(!=) and or (||) issue

我有这段代码:

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

但不是工作,我也做

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

但我在$value文本中包含语句并且我不想显示此字符串Prépresse

提前致谢

此语句将始终返回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')
<小时 />

维基百科关于德摩根定律的文章对此进行了探讨,其中指出:

这些规则允许通过否定纯粹地相互表达连词和析取。

规则可以用英语表示为:

合取的

否定是否定的析取.
析取的否定是否定的合相。

或非正式地作为:

"not (A and B)"

与 "(not A) or (not B)" 相同
另外,
"不是(A或B)"与"(不是A)和(不是B)"相同。

第一个代码应该使用&&而不是||来模拟与第二个代码相同的结果。

此外,$value->TEXT两边的括号是不必要的。

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

如果它们不适合您,请尝试对$value->TEXT进行var_dump,看看它是否与您尝试匹配的字符串不同。