• PHP松散比较与严格比较的区别详解


    在PHP中相等的比较有两种,松散比较和严格比较,当使用松散比较时,如果进行比较的两个操作数类型不同,那么会对操作数进行适当的类型转换,如果转换后的值相同则认为两个操作数相等。而使用严格比较时,如果两个操作数的类型不同,就认为是不想等的,如果类型相同且值也相同才会认为两个操作数相等。

            下面是PHP官网上松散比较和严格比较对比的两个表格。

    PHP 类型比较表

    以下的表格显示了 PHP 类型比较运算符在松散和严格比较时的作用。该补充材料还和类型戏法的相关章节内容有关。同时,大量的用户注释和 » BlueShoes 的工作也给该材料提供了帮助。

    在使用这些表格之前,需要明白变量类型及它们的意义。例如,"42" 是一个字符串而 42 是一个整数FALSE 是一个布尔值而 "false" 是一个字符串

    Note:

    HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。要想检测一个字符串是不是数字,可以使用is_numeric() 函数。

    Note:

    在没有定义变量 $x 的时候,诸如 if ($x) 的用法会导致一个 E_NOTICE 级别的错误。所以,可以考虑用 empty() 或者 isset() 函数来初始化变量。

     

    使用 PHP 函数对变量 $x 进行比较
    表达式gettype()empty()is_null()isset()boolean : if($x)
    $x = ""; string TRUE FALSE TRUE FALSE
    $x = null; NULL TRUE TRUE FALSE FALSE
    var $x; NULL TRUE TRUE FALSE FALSE
    $x is undefined NULL TRUE TRUE FALSE FALSE
    $x = array(); array TRUE FALSE TRUE FALSE
    $x = false; boolean TRUE FALSE TRUE FALSE
    $x = true; boolean FALSE FALSE TRUE TRUE
    $x = 1; integer FALSE FALSE TRUE TRUE
    $x = 42; integer FALSE FALSE TRUE TRUE
    $x = 0; integer TRUE FALSE TRUE FALSE
    $x = -1; integer FALSE FALSE TRUE TRUE
    $x = "1"; string FALSE FALSE TRUE TRUE
    $x = "0"; string TRUE FALSE TRUE FALSE
    $x = "-1"; string FALSE FALSE TRUE TRUE
    $x = "php"; string FALSE FALSE TRUE TRUE
    $x = "true"; string FALSE FALSE TRUE TRUE
    $x = "false"; string FALSE FALSE TRUE TRUE

     

    松散比较 ==
     TRUEFALSE10-1"1""0""-1"NULLarray()"php"""
    TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
    FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE
    1 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
    0 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE
    -1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
    "1" TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
    "0" FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
    "-1" TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
    NULL FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
    array() FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
    "php" TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
    "" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE

     

    严格比较 ===
     TRUEFALSE10-1"1""0""-1"NULLarray()"php"""
    TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
    FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
    1 FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
    0 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
    -1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
    "1" FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
    "0" FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
    "-1" FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
    NULL FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
    array() FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
    "php" FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
    "" FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE

    对于switch case  来说,应用的就是松散比较。

    在PHP中相等的比较有两种,松散比较和严格比较,当使用松散比较时,如果进行比较的两个操作数类型不同,那么会对操作数进行适当的类型转换,如果转换后的值相同则认为两个操作数相等。而使用严格比较时,如果两个操作数的类型不同,就认为是不想等的,如果类型相同且值也相同才会认为两个操作数相等。        下面是PHP官网上松散比较和严格比较对比的两个表格。
                                                                                   松散比较==
     TRUEFALSE10-1"1""0""-1"NULLarray()"php"""TRUETRUEFALSETRUEFALSETRUETRUEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSETRUEFALSETRUEFALSEFALSETRUEFALSETRUETRUEFALSETRUE1TRUEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE0FALSETRUEFALSETRUEFALSEFALSETRUEFALSETRUEFALSETRUETRUE-1TRUEFALSEFALSEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSE"1"TRUEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE"0"FALSETRUEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSE"-1"TRUEFALSEFALSEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSENULLFALSETRUEFALSETRUEFALSEFALSEFALSEFALSETRUETRUEFALSETRUEarray()FALSETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUEFALSEFALSE"php"TRUEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSE""FALSETRUEFALSETRUEFALSEFALSEFALSEFALSETRUEFALSEFALSETRUE                                                                                严格比较===
     TRUEFALSE10-1"1""0""-1"NULLarray()"php"""TRUETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE1FALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE0FALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE-1FALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSE"1"FALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE"0"FALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSE"-1"FALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSENULLFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEarray()FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSE"php"FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSE""FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUE
    --------------------- 作者:_荣耀之路_ 来源:CSDN 原文:https://blog.csdn.net/asty9000/article/details/80656922 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Windows出现BOOTBCD错误的解决办法
    解决真机调试时Eclipse DDMS上打不开/data目录的问题
    解决魅族MX5卸载debug-app不干净,导致安装、升级不成功的问题
    iOS10 相机相册等权限的使用、检测并引导用户开启权限
    python脚本后台执行
    CentOS 6.8 安装 Python3
    Virtualenv教程
    Linux路由表
    python websocket-client connection
    RESTful API 设计指南
  • 原文地址:https://www.cnblogs.com/apolloren/p/10111156.html
Copyright © 2020-2023  润新知