【问题标题】:Does PHP if statement assume you are checking for 'true' if left blank?如果留空,PHP if 语句是否假定您正在检查“真”?
【发布时间】:2013-07-24 03:47:50
【问题描述】:

我曾经以为我在某处读到过,如果你有这样的 PHP 脚本:

public function test($something){
    if($something == "true") {
        return true;
    } else {
        return false;
    }
}

if(test("true")){
    echo "Returned true";
}

那么这应该可以正常工作,因为if 语句假设您正在检查某事是否为真,而该内容为空?这是真的吗?如果是这样,将其留空是“好的编程”还是应该为了不偷工减料而完成陈述?

【问题讨论】:

  • this question 有一些关于 php 中类型杂耍的好信息......你在这里所做的是将字符串转换为布尔值。
  • @Orangepill,不……只是……不!这在很多方面都是错误的。
  • @SethMcClaine 启发我。

标签: php logic


【解决方案1】:
if($variable)

说得差不多了

if($variable != null && $variable != false && $variable != 0)

因此,只要设置了变量并且不等于 0 或 false,它将被评估为 true

“如果是这样,将其留空是否是“良好的编程”,还是应该为了不偷工减料而完成陈述?”

如果您尝试评估完全等于 true,这是走捷径,但通常使用 if($variable) 来确认 $variable 是用值定义的

【讨论】:

  • 当您获取数据库结果时,您会在 php 代码中看到很多,如果您不返回任何内容(评估 false),if($results) 通常将为 null,否则它将是一个填充数组确实(评估为真)
  • @SethMcClaine: if($variable) 检查!=null 和!=false 等。但它不检查isset($variable)。如果$variable 未设置if($variable) 将返回警告:未定义索引..
  • @zzlalani 谢谢,我不记得有没有。我在想,因为 php 的类型很松散,所以它不在乎是否设置了
  • 其实我只是运行它...它会返回 false 没有任何错误。
  • 它不会返回错误,但是警告,您的服务器可能配置为不显示警告..
猜你喜欢
  • 2011-01-13
  • 2021-12-05
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多