代码之家  ›  专栏  ›  技术社区  ›  thomasrutter

php:empty()的替代方法是什么,其中字符串“0”不被视为空的?[复制品]

php
  •  26
  • thomasrutter  · 技术社区  · 15 年前

    可能重复:
    Fixing the PHP empty function

    在PHP中,empty()是一个很好的快捷方式,因为它允许您检查是否同时定义了变量而不是空的。

    如果不希望将“0”(作为字符串)视为空,但仍希望将“false”、“null”、“0”和“视为空”,您将使用什么?

    也就是说,我想知道您是否有自己的快捷方式:

    if (isset($myvariable) && $myvariable != "") ;// do something
    if (isset($othervar  ) && $othervar   != "") ;// do something
    if (isset($anothervar) && $anothervar != "") ;// do something
    // and so on, and so on
    

    我认为我不能为此定义一个助手函数,因为变量可能是未定义的(因此不能作为参数传递)。

    7 回复  |  直到 15 年前
        1
  •  27
  •   Calvin    15 年前

    这应该是您想要的:

    function notempty($var) {
        return ($var==="0"||$var);
    }
    

    编辑:我想表格只能在预览中使用,而不能在实际的答案提交中使用。所以请参考 PHP type comparison tables 更多信息。

    notempty("")       : false
    notempty(null)     : false
    notempty(undefined): false
    notempty(array())  : false
    notempty(false)    : false
    notempty(true)     : true
    notempty(1)        : true
    notempty(0)        : false
    notempty(-1)       : true
    notempty("1")      : true
    notempty("0")      : true
    notempty("php")    : true
    

    基本上,notEmpty()与!空()表示除返回“0”以外的所有值 .


    编辑:如果使用 错误报告(全部) ,将无法按值将未定义的变量传递给自定义函数。正如墨卡托指出的,你应该 总是 使用 埃亚尔 符合最佳实践。 This link (注释11)他讨论了为什么不应出于性能和可维护性/调试原因而使用任何形式的错误抑制。

    有关如何将参数传递给自定义函数的信息,请参阅Orlandu63的答案。 by reference .

        2
  •  9
  •   moo    15 年前
    function isempty(&$var) {
        return empty($var) || $var === '0';
    }
    

    关键是 & 运算符,它通过 reference ,如果不存在则创建它。

        3
  •  3
  •   SvenFinke    15 年前
    if ((isset($var) && $var === "0") || !empty($var))
    {
    
    }
    

    这样,如果变量被设置为“0”,或者变量被设置为且不等于空(“0”,空,假),您将输入if构造。

        4
  •  2
  •   Bart S.    15 年前
    if(isset($var) && ($var === '0' || !empty($var)))
    {
    }
    
        5
  •  1
  •   thomasrutter    15 年前

    答案是我已经拥有的东西是不可能缩短的。

    禁止通知或警告不是我要做的事情,因此在检查值之前,我总是需要检查是否为空()或isset(),并且不能检查函数中是否有空()或isset()。

        6
  •  0
  •   Alix Axel    15 年前
    function Void($var)
    {
        if (empty($var) === true)
        {
            if (($var === 0) || ($var === '0'))
            {
                return false;
            }
    
            return true;
        }
    
        return false;
    }
    
        7
  •  0
  •   Luis    15 年前

    如果($var)!=空)