Php 与if/elseif/else有关的问题

Php 与if/elseif/else有关的问题,php,function,methods,control-structure,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的陈述卡住了

这是我的代码:

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)
{
如果(strlen($data>9))
{
$this->set_message('is_valid_data','字段需要少于9个字符');
返回FALSE;
}
elseif(斯特伦(数据<9))
{
$this->set_message('is_valid_data','字段不能少于9个字符');
返回FALSE;
}
elseif((substr($str,0,1)!='testing')|;(substr($str,0,1)!='test'))
{
$this->set_message('数据是否有效','请重新提交数据!');
返回FALSE;
}
elseif(!preg_match(“/^[0-9]/”,$str))
{
$this->set_message('数据有效吗','请不要忘记数字!');
返回FALSE;
}
其他的
{
返回TRUE;
}
}
出于某种原因,即使$data是9个字符,第一个if语句也会执行,然后第二个语句会失败,我会不断得到“字段不能少于9个字符”,即使$data正好是9个字符。我返回false是因为在另一个脚本中,我有一个函数调用是有效的数据($data),如果这个函数返回false,那么它会将错误返回给用户。如果返回true,则数据有效,我们可以继续


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

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

而不是

if(strlen($data > 9))
而不是

if(strlen($data > 9))

我认为你检查的条件不对。你需要的是 替换

if(strlen($data > 9))

同样的语法问题也出现在第二个
if
语句中。您可能想要的是替换

elseif(strlen($data < 9))
elseif(strlen($data<9))

elseif(strlen($data)<9)

我认为您检查的条件是错误的。你需要的是 替换

if(strlen($data > 9))

同样的语法问题也出现在第二个
if
语句中。您可能想要的是替换

elseif(strlen($data < 9))
elseif(strlen($data<9))

elseif(strlen($data)<9)

这段代码有一些地方不对劲,$str是什么?这是一个类的成员吗?这是一个全局性的吗?我需要了解这些信息才能提供帮助。谢谢

这段代码有一些地方不对劲,$str是什么?这是一个班级的成员吗?这是一个全球性的问题吗?我需要了解这些信息才能提供帮助。谢谢

您想将strlen($data)
的结果与9进行比较,现在在函数调用中就有了比较:
strlen($data)>9
与strlen($data<9)
不同-看到区别了吗?是的。。。我是一个noob,我甚至没有注意到这个问题:(谢谢。你想将
strlen($data)
的结果与9进行比较,你现在在函数调用中有比较:
strlen($data)>9
strlen($data<9)
-看到区别了吗?是的……我是一个noob,我甚至没有注意到这个问题:(谢谢。我会接受这个答案,但我不能。这是一个愚蠢的错误。非常感谢!我也不能投票支持你。但这确实有效。我会接受这个答案,但我不能。这是一个愚蠢的错误。非常感谢!我也不能投票支持你。但这确实解决了下面的回答:)或者我的例子,以及下面的修复或回答:)或者我的示例中的以下修复