为什么选择SSI条件!= ||!= 不起作用?



我无法处理这个条件表达式

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

而在CCD_ 2之前没有CCD_

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

怎么了?我没有得到任何错误,只是!=不工作,尽管||在其他条件下工作,但在单个条件下工作。

这是因为=!=几乎不是同一个运算符。注意,根据德摩根定律(我也在这篇旧文章中解释过),

a != b || c != d

相当于

a = b && c = d

这对于CCD_ 7是从不为真,其中CCD_。

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

因此,根据上述逻辑,

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

相当于

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

不能为真,因为$DOCUMENT_NAME可以是"index.html""links.html",但不同时是

然而,第二个片段,

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

"有效"是因为不存在上述逻辑上永远不真实的谬论。当$DOCUMENT_NAME是"index.html"或"links.html"时,情况将是正确的。


某些语言/值将违反上述等效性。。但这是另一个话题。

最新更新