php 相等性比较 以及 empty,isset, isnull

变量为空

以下的东西被认为是空的:

  • “” (空字符串)
  • 0 (作为整数的0)
  • 0.0 (作为浮点数的0)
  • “0” (作为字符串的0)
  • NULL
  • FALSE
  • array() (一个空数组)
  • $var; (一个声明了,但是没有值的变量)

判断语句中空值返回false,以下代码不会产生任何输出,因为if 语句中的判断都为false:

$emptyList = ["",  0, 0.0, "0", NULL, FALSE, array(), $var, ];
foreach($emptyList as $val) {
    if ($val) {
        var_dump($val);
    }
}

比较运算符: =====

  • ==只涉及到值的比较
var_dump(0 == '0.0'); // true
var_dump(0 == ''); // true
var_dump(0 == false); // true
  • === 同时涉及 值 与类型的比较, 更为严格
var_dump(0 === '0.0'); // false
var_dump(0 === ''); // false
var_dump(0 === false); // false
  • null 与 空值 通过== 比较, 除了 “0” ,都返回true:
<?php
$emptyList = ["",  0, 0.0, "0", NULL, FALSE, array(), $var, ];
foreach($emptyList as $val) {
    var_dump($val == null);
}

empty, isset, isnull

  • empty:检查一个变量是否为空
<?php
$emptyList = ["",  0, 0.0, "0", NULL, FALSE, array(), $var, ];
foreach ($emptyList as $e) {
    var_dump(empty($e));
}
/*
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
*/
  • isset:判断变量var 存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。
$var = 1;
var_dump(isset($var)); // true

unset($var);
var_dump(isset($var)); // false

$var = null;
var_dump(isset($var)); // false
  • isnull: 判断变量是否 为 null , 等价于 === null

注意

空值之间的==比较不一定返回 true :

// 不具传递性
var_dump(0 == '0'); // true
var_dump('' == 0 ); // true
var_dump('0' == ''); // false

var_dump(0 == []); // false

最佳实践

  • 空值判断使用 empty 判断;
  • isset 无法判断存在但值为null的变量;
  • php ===== 差别在于后者同时进行类型相等判断
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值