为啥 SSI 条件!= || != 不起作用?

Posted

技术标签:

【中文标题】为啥 SSI 条件!= || != 不起作用?【英文标题】:Why SSI condition != || != doesn't work?为什么 SSI 条件!= || != 不起作用? 【发布时间】:2012-08-23 13:46:07 【问题描述】:

我无法使用这个条件表达式

<!--#if expr="$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html" -->

虽然在= 之前没有! 的这个完美无缺

<!--#if expr="$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html" -->

有什么问题?我没有收到任何错误,只是 != 不起作用,尽管 || 在其他条件下但适用于单一条件。

【问题讨论】:

不工作 - 这是否意味着语法错误或给你意想不到的结果? 我没有错误。单个条件表达式有效&lt;!--#if expr="$DOCUMENT_NAME!=index.html" --&gt;。但是,如果我添加|| 和其他条件,则没有任何工作,也没有 SII 错误。 虽然||= 而不是!= 的条件相同。有什么奇怪的?! 【参考方案1】:

这是因为=!= 几乎不是同一个运算符。请注意,De Morgan's law(我也是explained in this old post),

a != b || c != d

等价于

a = b && c = d

对于x = a &amp;&amp; x = b a != b,这从不正确

更改二元运算符需要更改条件以使其等效。

因此,按照上述逻辑,

$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html

等价于

$DOCUMENT_NAME=index.html && $DOCUMENT_NAME=links.html

其中不能为真,因为 $DOCUMENT_NAME 可以是“index.html”“links.html”但不能同时是。 p>

但是,第二个 sn-p,

$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html

“有效”,因为没有上面提到的逻辑永远不正确的谬误。当 $DOCUMENT_NAME 是“index.html”或“links.html”时,这将是真的。


某些语言/价值观会违反上述等价性......但这是另一个话题。

【讨论】:

感谢您的回复。但是,我仍然有点困惑。那么如何以其他方式实现这个想法呢?基本上我在标题中有一个脚本,需要在所有页面上显示,但不是在 index.html、links.html 以及我想忽略的其他一些页面上显示脚本。 然后写下你的意思:a != b &amp;&amp; a != c 相当于!(a == b || a == c):“这不是a等于b的情况或 i> c." 好的,我现在明白了。但是如何在 SSI 条件下排除在特定页面上显示脚本? $DOCUMENT_NAME!=index.html &amp;&amp; $DOCUMENT_NAME!=links.html!($DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html) 应该可以解决问题。 谢谢! !($DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html)这就是我要找的。​​span>

以上是关于为啥 SSI 条件!= || != 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个简单的条件表达式不起作用? [复制]

为啥简单的算术减法在“if”条件下不起作用?

AnyLogic - 为啥我的基于条件的转换不起作用?

为啥在条件格式公式中引用另一个 Google 表格选项卡不起作用?

为啥我的 while 循环中的条件在 python 中不起作用?

为啥这个 VBA if 语句不起作用?