2013-05-21 91 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