1.2.3 PHP中的数据类型转换与比较

数据类型转换

自动转换

也叫隐式转换

程序会根据上下文环境自动的进行转换

其它类型转换成数值型

  • true->1
  • false->0
  • null->0
  • 字符串如果以非法数值开始,直接转换成0;如果字符串以合法数值开始,一直取到第一个非法数值结束

其它类型转换成字符串型

  • 数值型直接转换成数值本身
  • true->1
  • false->空字符串
  • null->空字符串
  • 数组->Array
  • 资源->Resource id #数字
  • 对象不能直接转换成字符串,会报致命错误,程序终止执行

其它类型转换成布尔类型假的有

  • 0->false
  • 0.0->false
  • 空字符串”或者””或者’0’或者”0″->false
  • null->false
  • 空数组array()->false

强制转换

也叫显示转换

临时转换

  1. (变量类型)$变量名称
    1.1 整型 (int)$变量名称|(integer)$变量名称
    1.2 浮点型 (float|double|real)$变量名称
    1.3 字符型 (string)$变量名称
    1.4 布尔型 (bool|boolean)$变量名称
    1.5 空 (unset)$变量名称
    1.6 数组 (array)$变量名称
    1.7 对象 (object)$变量名称
  2. 通过系统函数实现
    2.1 intval($var) 返回变量转换成整型之后的值
    2.2 floatval($var)|doubleval($var) 返回变量转换成浮点型的值
    2.3 strval($var) 返回变量转换成字符串的值
    2.4 boolval($var) 返回变量转换成布尔类型的值

注意:临时转换不改变变量本身的类型

永久转换

  1. settype($var,$type) 设置变量的类型
  2. gettype($var) 返回变量的类型

注意:不要使用gettype得到变量的类型,因为后续可能返回值会改变

通过变量函数库检测变量的类型

检测的结果要么true,要么false

变量类型 检测语法
整型 is_int()/is_integer()/is_long()
浮点型 is_float()/is_double()/is_real()
字符串型 is_string()
布尔类型 is_bool()
标量类型 is_scalar()
空null is_null()
数组 is_array()
对象 is_object()
资源 is_resource()
是否为数值型或者字符串形式的数值 is_numeric()

数据类型比较

虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:使用三个等号 === 比较,除了比较值,也比较类型。

例如,"42" 是一个字符串,而 42 是一个整数。FALSE 是一个布尔值,而 "false" 是一个字符串。

PHP中 比较 0、false、null

本文是全系列中第6 / 24篇:PHP快速入门

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部