2013-05-21 130 views
0

如果您希望用戶輸入數據,我正在創建白名單。我遇到了elseif語句。if/elseif/else問題

這是我的代碼:

public function is_valid_data($data) 
    { 

    if(strlen($data > 9)) 
    { 
     $this -> set_message('is_valid_data', 'Field needs to be less than 9 characters'); 
     return FALSE; 
    } 
    elseif(strlen($data < 9)) 
    { 
     $this -> set_message('is_valid_data', 'Field can not be under 9 characters'); 
     return FALSE; 
    } 
    elseif((substr($str, 0, 1) !== 'testing') || (substr($str, 0, 1) !== 'test')) 
    { 
     $this -> set_message('is_valid_data', 'Please re-submit data!'); 
     return FALSE; 
    } 
    elseif(!preg_match("/^[0-9]/", $str)) 
    { 
     $this -> set_message('is_valid_data', 'Please dont forget about the numbers!'); 
     return FALSE; 
    } 
    else 
    { 
     return TRUE; 
    } 

    } 

因爲即使$的數據是9個字符的第一個if語句經過某種原因,那麼第二個失敗,我不斷收到「字段不能爲下9個字符'儘管$數據正好是9個字符。我返回false是因爲在另一個腳本中,我有函數調用is_valid_data($ data),並且如果此函數返回false,則它會將錯誤返回給用戶。如果它返回true,那麼數據是有效的,我們可以繼續

我似乎無法動搖這個問題。

+1

你想比較'strlen($ data)'的結果到9,你現在在函數調用裏面進行比較:'strlen($ data)> 9'和'strlen($數據<9)' - 看到區別? –

+0

是啊...我是一個noob我什至沒有注意到這個問題:(謝謝 – user2406611

回答

3
if(strlen($data) > 9) 

代替

if(strlen($data > 9)) 
+0

我會接受這個答案,但我不能。這是一個愚蠢的錯誤。非常感謝! – user2406611

+0

而且我可以'你也可以投票,但是這個工作確實有效 – user2406611

0

當你使用$data < 9這意味着它應該小於9,如果你想它允許9以及那麼你將需要<=小於或等於。

0

我認爲你正在檢查的條件是錯誤的。你需要的是 與

if(strlen($data) > 9) 

同樣syntctical問題更換

if(strlen($data > 9)) 

也存在於第二if聲明。你可能想是

elseif(strlen($data) < 9) 
0

有幾件事情錯碼是什麼$海峽更換

elseif(strlen($data < 9)) 

是這個羣體的成員是一個全球性的,我需要知道這些事情以幫助。謝謝

+0

或者下面的回覆:)或者我的例子有下面的修復http://pastebin.com/zJbQGzUP – BigDave