代码之家  ›  专栏  ›  技术社区  ›  bryan kennedy

这些PHP条件相同还是有优势

  •  2
  • bryan kennedy  · 技术社区  · 17 年前

    if ($variable != NULL) {
    

    if (!empty($variable)) {
    

    if ($variable) {
    

    他们不是都一样吗?如果您只是想判断变量是否存在,那么最后一个似乎总是最简单的。谢谢你帮我理解这里的区别。我错过了PHP101的第一天。

    4 回复  |  直到 17 年前
        1
  •  6
  •   Sean McSomething    17 年前

    退房 this table 要获得PHP比较运算符的详细信息。false、0、“、NULL和未定义的变量之间有许多细微的区别。

        2
  •  2
  •   Ross    17 年前

    我同意肖恩的观点,但我将用通俗易懂的英语概述他们各自的工作:

    if ($variable != NULL) {
    

    $variable NULL 如果还没有设置。这实际上与 isset 与未定义的变量相同。

    if (!empty($variable)) {
    

    一般来说,这会检查 $variable 一串( (string) $variable strlen true false ,以及非0的整数和空数组。出于某种原因(我认为这是错误的) $variable = '0'; 符合事实的 .

    if ($variable) {
    

    此对/错检查的行为类似于 (boolean) $variable -基本上,变量转换为布尔值时是否返回true。

    (布尔)$变量 (输入施法/杂耍)看到这个了吗 manual page

    (PHP开发者:这主要是通过内存实现的,如果我在这里错了,请纠正我!)

        3
  •  2
  •   Dan Soap    17 年前

    在严格错误模式(E_strict)下运行时,子句

    if ($variable) {}
    

    if ($variable != null) {}
    

    当这些变量未初始化时,将抛出通知。

    Notice: Undefined variable: variable
    

    这些注意事项是代码中缺陷的标志,因为未初始化的使用可能是一个安全漏洞。(关键字:register_globals)。

    我最喜欢检查变量是否存在的方法是

    if (isset($variable)) {}
    

        4
  •  1
  •   Community Mohan Dere    9 年前

    Weak typing in PHP: why use isset at all?

    基本上,它们在处理空值、空值、零和布尔值时是不同的。

    推荐文章