我无法使用这个条件表达式
<!--#if expr="$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html" -->
虽然!
之前没有=
的这个工作正常
<!--#if expr="$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html" -->
有什么问题?我没有收到任何错误,!=
虽然||
不适用于其他条件,但适用于单一条件。
答案 0 :(得分:2)
这是因为=
和!=
几乎不是同一个运营商。请注意,De Morgan's law(我也是explained in this old post),
a != b || c != d
相当于
a = b && c = d
对于x = a && x = b
a != b
{/ 1}},永远不会为真。
更改二元运算符需要更改条件也是等效的。
因此,通过上述逻辑,
$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”时,情况就会如此。
某些语言/值会违反上述等效性。但这是另一个主题。