【问题标题】:In PHP can I check a boolean on a function call?在 PHP 中,我可以检查函数调用的布尔值吗?
【发布时间】:2011-01-28 02:46:26
【问题描述】:

我有一个函数可以检查传递的值并返回 false 或 true,如果为 false,我希望它向数组添加一些内容。我写的代码如下。

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

现在它无论如何都会添加到我的数组中,无论在表单中输入什么。我写的方式是检查check_input() 的返回是否为假的正确方法吗?我已经通过将返回更改为回显来检查函数的逻辑,并且它返回了正确的值,我只是不确定我是否检查错了。

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

编辑:

好的,在查看我的函数后,我认为我发现了问题,我有一个 if 语句,在该 if else 语句中,第一个 if 检查值不为空,第二个 if 检查值不为空超过其最大长度并返回真/假。我将它设置为仅检查最大长度,如果我传入了该值 - 或者它设置为空。但是,总的来说,我没有为主要的 if 语句返回 true。所以我目前的逻辑是,如果该值大于没有,则根据最大长度检查它,然后返回 true。如果我不检查最大长度并且它确实具有价值,它不会返回任何东西。嗯。我认为这是我的问题的原因?

编辑 2:

感谢大家,感谢 Marvin,他建议我重新检查该功能。我已经让它工作了。不是如果某事返回假,如果其他事返回假,我从 else 语句中取出我的返回真,嘿,快!

【问题讨论】:

  • statemnet 是对的,你可以使用这样的函数。你的 check_input 函数应该有问题,我会仔细检查一下
  • 如果你想让它工作,check_input() 必须返回一个布尔值。

标签: php boolean


【解决方案1】:

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

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

      return true;
 }

然后正如codaaddict 所说,检查函数的返回值的类型以及与=== 的相等性

【讨论】:

  • “检查类型”?但这是一个请求变量,因此 总是 一个字符串
  • 不,在 check_input() 返回时检查类型
【解决方案2】:

您需要使用=== 运算符将函数的返回值与false 进行比较:

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

但是,如果您确定该函数只返回 boolean 值,那么您的处理方式也应该有效。

问题来了,比如说你的函数在失败时返回false,在成功时返回一个整数/字符串。在这种情况下,您的检查方式不会区分 false 和 0(作为成功返回值返回)

【讨论】:

  • 目前我只将它设置为返回真或假,我也希望它返回一个字符串,但我正在慢慢处理......非常痛苦!出于兴趣,我知道 == 和 === 之间存在差异,但在这种情况下,它如何改变结果?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多