zoukankan      html  css  js  c++  java
  • PHP的isset(),is_null,empty()你了解了没?

    这几个变量判断函数在PHP开发中用的其实挺多的,而且粗看上去都差不多,但其实还是有不少的区别的,如果搞不清楚,也许就会遗留一些潜在的bug, 包括我自已也遇到过这样的坑,比如有一次我就遇到过用empty判断出现的问题,前端是允许输入0的,但是我用empty判断的话就为真,我就直接给报错了,所以这里就不能用这个判断了。

    我们先看下这几个函数具体的用途

    isset — 检测变量是否已设置并且非 NULL

    empty — 检查一个变量是否为空,以下的东西都被认作空
    "" (空字符串)
    0 (作为整数的0)
    0.0 (作为浮点数的0)
    "0" (作为字符串的0)
    NULL
    FALSE
    array() (一个空数组)
    $var; (一个声明了,但是没有值的变量)

    is_null — 检测变量是否为 NULL

    一 isset

    判断变量有无先定义,数组的键值有无存在等

    <?php
    $data=[""," ", 0, 0.0 ,"0", null, "null", true, false ,[]];
    foreach ($data as $key => $val){
    	echo $key . '=>' . var_dump(isset($val)) . "
    ";
    }
    //以上输出只有 null返回false,其它都为真
    
    $arr = ['name' =>'lc', 'age' => 22, 'address' =>null];
    echo isset($arr['name']) . "
    ";  //true
    echo isset($arr['mobile'])."
    ";  //false
    echo isset($arr['address']) ."
    "; //false
    //未定义的键和值为null,返回false
    

    empty

    $data=[""," ", 0, 0.0 ,"0", null, "null", true, false ,[]];
    foreach ($data as $key => $val){
    	echo $key . '=>' . var_dump(empty($val)) . "
    ";
    }
    //以上输出 '" "',"null",true等为false,其它为true
    

    is_null

    $data=[""," ", 0, 0.0 ,"0", null, "null", true, false ,[]];
    foreach ($data as $key => $val){
    	echo $key . '=>' . var_dump(is_null($val)) . "
    ";
    }
    //以上输出 null 为true,其它全为false
    

    另外,PHP7有一个快捷判断的方式就是 ??和 ?:语法,这个也要多注意下

    $a ?? 0; //相当于isset($a);
    $a ?: 0; //相当于!empty($a);
    

    通过上面的示例,应该了解这几个的差异了,在开发的时候我们只要多注意下,就能选择合适的判判函数了。

    结论

    isset:非 null的都为true.
    empty: "" , 0 ,0.0,"0",null,false,array(),未定义var都为true.
    is_null:值为null为true.

  • 相关阅读:
    Linux内核网络协议栈优化总纲
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 链表数据求和操作
  • 原文地址:https://www.cnblogs.com/smartrui/p/12105311.html
Copyright © 2011-2022 走看看