2015-12-11 78 views
1

我正在使用一些遺留代碼,並且我被困在評估具有多個條件的ColdFusion if語句。我期望做的是這樣的:ColdFusion if語句有多個條件

<cfif condtion1 eq'yes'> 
    Display admin text 
</cfif> 

<cfif condition2 eq'yes' && condition1 eq'no'> 
    display non-admin text 
    </cfif> 

<cfif condition2 eq'yes' && condition1 eq'yes'> 
    display non-admin text 
    </cfif> 

如果第一條語句正確,它的功能正常。 如果第二個陳述是真實的,如果功能正常。

如果第三條語句正確,它將顯示第一條語句中的文本,當它顯示第二條語句中的文本時。

+0

不,&&非常好。 @ kidaiu - 好吧...那你的問題是什麼? :) – Leigh

+0

@Leigh Yup。你是對的。某些原因,我一直使用'AND'作爲標籤,'&&'作爲腳本......不知道我在哪裏挑選了那個 – beloitdavisja

+0

@beloitdavisja - 好吧,它並不總是被支持;-)我總是混淆的一個是試圖當它只在cfscript中工作時,在標籤中使用'>'或'> ='。 – Leigh

回答

1

就像Leigh在評論中提到的那樣,如果condition1 eq'yes',那麼陳述1和3都是真實的。

如果只希望在所有情況下block都爲true,那麼在第一個if語句中添加「condition2 neq'yes'」。

+0

是的。儘管爲了提高可讀性,我建議將'eq'yes''和'neq'yes''東西改爲'isSomething'或'!isSomething'(並且可能將其表示爲兩個條件而不是三個)。 – Leigh

2

要顯示 「顯示管理文本」 只有condition1得到滿足,你可以去這樣的:

<cfset isAdmin = condition1> 
<cfset isUser = condition2> 

<cfif isAdmin and (not isUser)> 
    Display admin text 
<cfelse> 
    display non-admin text 
</cfif> 

爲了澄清這一點:

<cfset isAdmin = condition1> 
<cfset isUser = condition2> 

<cfif isAdmin and isUser> 
    I'm admin AND user. 
<cfelseif isAdmin> 
    I'm admin BUT NOT user. 
<cfelseif isUser> 
    I'm NOT admin, BUT user. 
</cfif> 

注:我宣佈 「說」 變量僅爲更好的可讀性。

+0

第二部分很好的解釋。 – Leigh

+0

感謝您對此的所有回覆。我最終通過文件進行了梳理,並且能夠隔離當滿足條件1時變爲null的變量,而在滿足所有其他變量時變量不爲空。所以我想我最終會接近Alex所說的話。我還發現trycf.com網站非常有幫助。作爲Stack社區的新手,不確定該過程如何工作以表示對此的幫助表示讚賞。 – kidaiu

+0

@kidaiu - 在一般情況下a)投票發現任何有用的帖子b)如果帖子要麼完全回答您的問題,要麼提供了大部分信息以引導您回答問題,請檢查旁邊的綠色箭頭並將其標記爲解。 c)如果您發現自己的解決方案 - 或者您的最終代碼與其他答案中已發佈的*顯着不同 - 請隨時發佈您自己的答案。 (S.O.允許)這不僅有助於下一個傢伙,但人們也可以投票。 – Leigh