# 数据类型 [TOC] PHP变量本身没有类型,变量类型取决变量值的类型 ![](https://box.kancloud.cn/fe2a13d4815f126a11163dfa9f93559a_817x274.png) 数据类型知识点: * [ ] 整数类型:整数类型可以为整数也可以为负整数,且整数可以用进制表示`以0开头的整数都是进制的表达式`,且注意超过整数的最大与最小取值访问返回结果都是为false * [ ] 浮点数类型:浮点数类型可以为正数也可以为负数,也可以用科学小数表示`数字里面带了E的数`,且注意浮点数的比较不准确,一般都是把小数转变成整数再去比较 * [ ] 布尔值类型:布尔值类型只有二个值true和false分别表示真和假,且注意布尔值的true与false是不区分大小写 * [ ] 空值类型:NULL类型只有一个值,就是不区分大小写的常量NULL,且注意NULL表示这个变量没有值 * [ ] 字符串类型:字符串类型用双引号与单引号表示。**在双引号内,变量能被解析。在单引号内,变量不会被解析**。在双引号内,所有转义字符都可以使用,在单引号只有`\'`能使用。双引号的效率不如单引号,在PHP代码中能用单引号全部都尽量用单引号。在双引号中`{}`中的变量也可以被解析,单引号的效率要高于双引号! 为了适合PHP混编,PHP专门提供了**定界符**来代替双引号与单引号 ``` <<<PHP 跟双引号一样效果,且注意'PHP'可以自定义想怎么写都可以但是最后结尾的时候必须放在首行不能缩进! 在双引号定界符中特殊字符不需要转义 PHP; <<<'PHP' 跟单引号一样效果,单引号与双引号定界符的区别就在于定义的时候在<<<头中一个有单引号一个没单引号 需要注意的就是结尾必须是首行不能缩进 PHP; ``` ## 判断数据类型 PHP为弱类型语言,我们定义变量不需要去申明变量类型,PHP会根据所赋的值确定变量类型。PHP也为我们提供检查变量类型的函数 | 函数 | 含义 | | :-: | :-: | | is\_string() | 检查变量是否是字符串 | | is\_int() | 检查变量是否是整数 | | is\_float() | 检查变量是否是浮点数 | | is\_bool() | 检查变量是否是布尔值 | | is\_array() | 检查变量是否是数组 | | is\_object() | 检查变量是否是对象 | | is\_resource() | 检查变量是否是资源 | | is\_null() | 检查变量是否是NULL | | is\_numeric() | 检查变量是否为数字或字符串 | ## 数据类型转换 变量类型不一样可以运算嘛?变量的类型**不一样是不可以运算**的,在PHP中类型一致才可以进行运算。我们可以人为的转变数据的类型,当然系统也会自动进行必要的数据类型转换。 强制转变类型: * [ ] 转换为布尔型:(bool) 或 (boolean) * [ ] 转换为字符型:(string) 或 strval()函数 * [ ] 转换为整型:(int) 或 intval()函数 * [ ] 转换为浮点数:(float) * [ ] 转换为数组:(array) * [ ] 转换为对象:(object) 自动转变类型: 在使用不同类型变量进行运算的时候,PHP将根据需要自动尝试必要的数据类型转变。 * [ ] 如当我们使用`逻辑运算`的时候,左右两边要转成`bool值`在进行运算 * [ ] 可以自动转换成`false`的值:0,0.0,"",null,false,空数组 * [ ] bool值转换成整型true为1false为0 * [ ] bool值转换成字符串true为"1"false为"0" * [ ] 字符串转行为bool值`'0',''为false,其余都为true` * [ ] null转换成字符串为" ", * [ ] 整数100转换成字符串为“100” * [ ] 浮点数转换成整数去到小数部分 * [ ] 纯字符串开头的值转换成整数为0,如果以数字开头的字符串转换成整数取数值部分如:“109px” 转换成整数为109 ## 计算机进制转换 在PHP我们也可以对计算机进制进行转换,进制单词:decimal(十进制)、binary(二进制)、octal(八进制)、hex(十六进制) * [ ] 十进制转成二进制:decbin() * [ ] 十进制转成八进制:decoct() * [ ] 十进制转成十六进制:dechex() * [ ] 二进制转成十进制:bindec() * [ ] 八进制转成十进制:octdec() * [ ] 十六进制转成十进制:hexdec() >[danger] 注意:如果将二进制转成八进制,应该先转成十进制,再转成八进制