V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
benmaowang
V2EX  ›  程序员

PHP 怎么高效地判断一个变量是否有“可用”的值?

  •  
  •   benmaowang · Sep 30, 2015 · 4429 views
    This topic created in 3861 days ago, the information mentioned may be changed or developed.
    对于一个给定的变量,怎么判断这个变量不是 [NULL ,未定义,定义但没赋值,空字符串,空数组]?
    我想了下,判断出来当然是可以的,但对这个世界上最好的语言来说太啰嗦了。
    那么有没有优雅的方法呢?
    18 replies    2015-10-01 04:07:53 +08:00
    linauror
        1
    linauror  
       Sep 30, 2015
    $a = array(); // 可定义为 null,空字符串,空数组等
    if ($a) {
    echo 'success';
    }

    就一个 if ,够优雅吧
    abelyao
        2
    abelyao  
       Sep 30, 2015 via iPhone
    @linauror
    如果 $a = false 那么这里也不通过,但很多时候 false 是一个状态,并非无用值或空值。
    soudesuka
        3
    soudesuka  
       Sep 30, 2015
    isset($var) && $var
    wesley
        4
    wesley  
       Sep 30, 2015
    答案在这里:
    if ( empty($var)) {
    }
    linauror
        5
    linauror  
       Sep 30, 2015
    if ($a || $a === false || $a === 0)
    好像没那么优雅了,考虑到 false 和 0 的话
    flydogs
        6
    flydogs  
       Sep 30, 2015
    "有用"还是“没有用”,这个要看实际情况的
    null ,空,空数组等等 有些情况也是有用的。

    所以还是乖乖自己写个 function 在里面列举一下,其他地方调用吧。
    realpg
        7
    realpg  
    PRO
       Sep 30, 2015
    empty
    moro
        8
    moro  
       Sep 30, 2015
    empty +1
    phithon
        9
    phithon  
       Sep 30, 2015
    empty +2
    linauror
        10
    linauror  
       Sep 30, 2015
    empty 也并没有排除掉 0 和 false
    iyaozhen
        11
    iyaozhen  
       Sep 30, 2015
    这个还是看需求吧。你要干什么?
    zonghua
        12
    zonghua  
       Sep 30, 2015
    面向过程的 PHP 。。。
    anubiskong
        13
    anubiskong  
       Sep 30, 2015
    换语言^_^
    php230
        14
    php230  
       Sep 30, 2015
    就一个 if ,够优雅吧
    nanwangnongfu
        15
    nanwangnongfu  
       Sep 30, 2015
    在全局变量$GLOBALs 数组里查找,如果存在说明注册了
    zjqzxc
        16
    zjqzxc  
       Sep 30, 2015
    php 作为最好的语言,当然一个 if($a)就搞定啦。
    不过,考虑到 undefine 这种情况,建议独立检查 isset 。

    话说,楼主变量使用前不声明么,干嘛要考虑未定义呢。。如果是函数返回值返回空、 0 、 false 、空数组都有可能,未定义就不太好了吧。
    综上,变量先声明再使用 if 。
    zhujunsan
        17
    zhujunsan  
       Sep 30, 2015 via Android
    http://php.net/manual/zh/types.comparisons.php
    附上 PHP 真值表,楼主挑合适的用
    xifangczy
        18
    xifangczy  
       Oct 1, 2015
    @linauror empty 连 '0' 都会看错空
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3597 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 04:41 · PVG 12:41 · LAX 21:41 · JFK 00:41
    ♥ Do have faith in what you're doing.