• 技术文章 >后端开发 >PHP问题

    PHP的 ?:,??,isset,empty都是什么意思

    醉折花枝作酒筹醉折花枝作酒筹2021-07-20 16:29:10转载135
    个人感觉,PHP中的关于判断变量是否存在或者为空的语法设计是失败的,分工不明确,界限不清楚,判断起来很容易遗留漏洞,讨厌这种看起来功能多但是模糊的设计,这不能归结为PHP是弱类型语言,而是实现者的问题。今天就来介绍几个好玩的东西。

    isset

    检测变量是否已设置并且非 null,

    isset ( mixed $var , mixed $... = ? ) : bool
    <?php
    
    function tt() {
        
    }
    $a = null;
    $b = 0;
    $c = [];
    var_dump(isset($a)); // false
    var_dump(isset($b)); // true
    var_dump(isset($c)); // true
    var_dump(isset($c['name'])); // false
    var_dump(isset($d)); // false
    var_dump(isset($a, $b, $c, $d)); // false
    
    // var_dump(isset("abc")); // 语法错误
    // var_dump(isset(tt())); // 语法错误
    // var_dump(isset(MY_CONST)); // 语法错误

    可安全的用于检查对象的对象的变量

    // instead of writing
    isset($abc) && isset($abc->def) && isset($abc->def->ghi);
    
    // or in a shorter form
    isset($abc, $abc->def, $abc->def->ghi);
    
    // you can just write
    isset ($abc->def->ghi);

    empty()

    判断一个变量不存在,或为空。

    empty ( mixed $var ) : bool
    <?php
    
    function tt() {
        
    }
    $a = null;
    $b = 0;
    $c = [];
    var_dump(empty($a)); // true
    var_dump(empty($b)); // true
    var_dump(empty($c)); // true
    var_dump(empty($c['name'])); // true
    var_dump(empty($d)); // true
    var_dump(empty("abc")); // false
    var_dump(empty(tt())); // true
    // var_dump(empty(MY_CONST)); // 语法错误

    !

    判断是否为空。也可以判断是否存在,未定义的变量会报 PHP Notice,也不会报语法错误,不会终止程序。

    <?php
    
    function tt() {
        
    }
    $a = null;
    $b = 0;
    $c = [];
    
    var_dump(!$a); // true
    var_dump(!$b); // true
    var_dump(!$c); // true
    var_dump(!$c['name']); // true  PHP Notice:  Undefined index: name
    var_dump(!$d);  // true  PHP Notice:  Undefined index: name
    var_dump(!("abc"));  // false
    var_dump(!tt());  // true
    // var_dump(!MY_CONST); // 语法错误

    ?:

    三目运算符的简写。

    $c['name'] ?: 10 等价于 !$c['name'] ? 10 : $c['name']

    所以说它的判断依据依然是:判断是否为空。也可以判断是否存在,未定义的变量会报 PHP Notice,也不会报语法错误,不会终止程序。

    ??

    $a ?? 10 等价于 isset($a) ? $a : 1

    归纳

    推荐学习:php视频教程

    以上就是PHP的 ?:,??,isset,empty都是什么意思的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP
    上一篇:php如何安装扩展 下一篇:PHP中数组和字符串如何进行转换(必看)
    VIP会员

    相关文章推荐

    • php jpg怎么转换成png图片• php字符串怎么进行大小写不敏感比较• PHP如何使用串口通信• php中字符串操作方法有哪些• php如何安装扩展

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网