2010-03-16 79 views
1

我有一个函数,检查传递的值,并返回false或true,如果为false我希望它添加到数组的东西。我写的代码如下。在PHP中,我可以检查函数调用的布尔值吗?

if(!check_input($_POST['username'])){ 
    $errors[] = "Username"; 
} 

无论如何,它无论如何都会添加到我的数组中,而不管输入的内容是什么。我写过的方法是检查check_input()返回的错误是否正确?我通过改变返回回声来检查函数的逻辑,并且它返回正确的值,我只是不确定是否检查错误。

我之前曾尝试将其编写为$X=check_input等,然后是if(check_value == false),但这似乎并没有给我想要的结果。嗯快速指针请!

编辑:

好了,看着我的功能后,我觉得我看到了这个问题,我有一个if语句,以及一个内部的if else语句中,如果检查值不为空第一,秒检查它是否超过其最大长度并返回真/假。我把它设置为只检查最大长度,如果我通过了这个值 - 或者它什么也不设置。但总的来说,我对主要的if语句没有回报。所以我的逻辑是目前,如果值大于无,那么检查它与最大长度,然后返回true。如果我不检查最大长度,它确实有价值,它不会返回任何东西。嗯。我在想这是我的问题的原因?

编辑2:

感谢所有,和马文,谁建议我重新检查功能。我有它的工作。如果某件事情返回假,如果其他事情返回假,并且我把我的回报从其他语句中删除,并且嘿!

+0

相等statemnet是正确的,你可以使用这样的函数。 你的check_input函数应该有问题,如果你想让它工作,我会尝试检查它 – marvin 2010-03-16 13:22:58

+0

,'check_input()'必须返回一个布尔值。 – dnagirl 2010-03-16 13:24:20

回答

1

您需要使用===运营商false该函数的返回值进行比较:

if(check_input($_POST['username']) === false) { 

但如果你确信该函数返回唯一boolean值你这样做,也应该工作的方式。

问题出现时,说你的函数在失败时返回false,成功时返回一个整数/字符串。在这种情况下,你的支票的方式不会false0(返回为一个成功的返回值)之间的区分

+0

目前我只设置它返回true或false,我也很喜欢它返回一个字符串,但我慢慢地把事情......痛苦地如此! 出于兴趣,我知道==和===有区别,但在这种情况下它是如何改变结果的? – TooManyCooks 2010-03-16 13:34:02

0

确保您的函数返回一个boolean而不是string

function check_input() 
{ 
     if(! [enter logic here]) 
      return false; # not return "false"; 

     return true; 
} 

然后为codaaddict说,检查函数的返回值类型以及是否与===

+0

“检查类型”?但是这是一个请求变量,因此**总是**一个字符串 – symcbean 2010-03-16 13:38:40

+0

不,请检查check_input()的返回类型 – Andy 2010-03-16 13:47:54

相关问题