2013-10-23 63 views
0

我有一個PHP switch語句,它可以授予對錶單的訪問權限,或者顯示基於用戶類型以及他/她是否擁有權限的錯誤消息。我需要幫助的情況如下所示:調用多個函數的PHP switch語句;所有函數輸出都將返回而不是一個

case 2: 
CheckStatus(); 
CheckRevokeFlag(); 
CheckNotifyFlag(); 
RecordLock(); 
include 'gotopage1.php'; 
break; 

該函數根據用戶的訪問級別調用顯示消息。我的問題是,一次只能顯示一條消息,但有時可能有多個條件成立。例如,如果用戶不具有表單的權限(CheckStatus),並且表單也被其他人使用(RecordLock),則他同時獲得「拒絕訪問」和「記錄被鎖定」。有沒有辦法解決這個問題,以便用戶只能得到「拒絕訪問」消息或「記錄被鎖定」消息,還是應該使用除switch語句之外的其他東西?

+0

是的,但我們不知道你的錯誤信息被返回或顯示。你想要第一個錯誤嗎? - 然後停止檢查更多,或最後一個錯誤? - 然後只是覆蓋$ error – 2013-10-23 20:59:54

+0

如果這些函數中的任何一個返回了一個值,您可以測試該值以指示發生了錯誤,則可能會過早地「斷開」,然後纔會正常進行。 – Crackertastic

回答

2

我要在黑暗中拍攝這裏。

比方說,你的功能在這種模式定義爲:

function funcName() { 
    // do some stuff here 
    if($error) echo $error; 
} 

它改成這樣:

function funcName() { 
    // do some stuff here 
    if($error) { 
     echo $error; 
     return false; 
    } 
    return true; 
} 

現在該函數返回的東西,所以我們可以用它做的東西。所以,現在

case 2: 
    CheckStatus() or break; 
    CheckRevokeFlag() or break; 
    CheckNotifyFlag() or break; 
    RecordLock() or break; 
    include "gotopage1.php"; 
    break; 

,如果每個函數返回true(即沒有錯誤情況報告),那麼它將繼續正常:你switch情況下,結構的變化來。否則,它將打到or break並停止處理剩餘的檢查。

+0

創意實現。 +1,因爲它沒有條件塊。 –

+0

Hey Niet ...只是使用這個其他問題來聯繫你...我不是console.logging'this' ....我是console.logging'this.tagname'這是一個錯誤,因爲它應該是' this.tagName' ...這是問題。所以我刪除了這個問題。感謝您的答案,但事實證明這並不適用! – Aerovistae

+0

@Aerovistae好吧,即使你有一個錯字,你仍然提出了一個有趣的觀點,我真的不認爲這些評論者應該以他們的方式擊敗你。如果他們應用最少的想法......我只是打開控制檯並輸入你的代碼。果然,'undefined'不止一次出現。然後我發現它,並看到相關標籤沒有「href」。真的,這個問題是相互矛盾的,這是一種恥辱,人們不會花時間舉起一隻手指來幫助,僅僅因爲你沒有給出這樣一個簡單的代碼的「自足的例子」... –

相關問題