if / elseif / else的问题

时间:2013-05-21 17:42:33

标签: php function methods control-structure

如果您要让用户输入数据,我正在创建白名单。我被卡在了elseif语句上。

这是我的代码:

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;
     }

   }

出于某种原因,即使$ data是9个字符,第一个if语句通过,然后第二个失败,我继续得到'字段不能低于9个字符',即使$ data正好是9个字符。我返回false,因为在另一个脚本中我有函数调用is_valid_data($ data),如果此函数返回false,则它会将错误返回给用户。如果它返回true,则数据有效,我们可以继续

我似乎无法动摇这个问题。

4 个答案:

答案 0 :(得分:3)

if(strlen($data) > 9)

而不是

if(strlen($data > 9))

答案 1 :(得分:0)

当您使用$data < 9时,它意味着它应该小于9,如果您希望它允许9,那么您需要<=小于或等于{{1}}

答案 2 :(得分:0)

我认为你正在检查错误的条件。你需要的是什么 替换

if(strlen($data > 9))

if(strlen($data) > 9)

第二个if语句中也存在相同的合成问题。您可能想要的是替换

elseif(strlen($data < 9))

通过

elseif(strlen($data) < 9)

答案 3 :(得分:0)

这个代码有一些问题是什么是$ str这是一个类的成员是一个全局我需要知道这些东西才能提供帮助。感谢