PHP支持8种原始类型(内置类型),其中包括4种标量类型、2种复合类型、2种特殊类型。PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,其自动转换数据类型(C语言、Java需声明变量数据类型)
一.标量类型
1.整型(Integer)
类似于常见的整数,可用十进制、八进制、十六进制指定。十进制是日常使用的数字;
八进制数字前必加上阿拉伯数字“0”;
十六进制数字前必须加“0x”;
获取最大整数PHP_INT_MAX(),为2147463747,超过则自动转为浮点数
2.浮点型(float)
浮点型(也叫浮点数 float,双精度数 double 或实数 real),即小数,可以用小数点或科学计数法表示。科学计数法可用小写e,也可用大写E。如:
$num_float = 1.2e3; //科学计数法,小写e,小数点往后移,扩大3倍
$num_float = 7.0E-10; //科学计数法,大写E
浮点数有效范围: -1.8E-308~1.8E+308
3.标量类型—字符串(String)
由一系列字符组成,其中每个字符等同于一个字节,即256种不同字符的可能性
可用三种方法定义:
单引号形式、双引号形式、Heredoc结构形式(后期“字符串”一章详解)。
4.布尔类型(Boolean)
只有两个值,一个是TRUE(1),另一个FALSE(0)
二.复合类型
5.数组(Array)
6.对象(Object)
三.特殊类型
7.资源(Resource)
由专门的函数建立和使用,例如打开文件、数据连接、图形画布。我们可以对资源进行操作(创建、使用和释放)。任何资源不被需要应被及时释放。如果忘记释放,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽。
8.空(Null)
空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL或尚未被赋值或被unset,这三种情况下变量被认为是NULL。
四.判断数据类型
is_bool() //检测变量是否是布尔型
is_int() //检测变量是否是整型
is_string() //检测变量是否字符串
is_float() //检测变量是否是浮点
is_null() //检测变量是否为空
is_array() //检测变量是否数组
is_object() //检测变量是否对象
is_numeric() //检测变量是否为数字或数字字符串
五.类型转换Type Juggling
1.强制转换
PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。
(int), (integer) - 转换为整形 integer
(bool), (boolean) - 转换为布尔类型 boolean
(float), (double), (real) - 转换为浮点型 float
(string) - 转换为字符串 string
(array) - 转换为数组 array
(object) - 转换为对象 object
(unset) - 转换为 NULL (PHP 5)
实例:
$May = 10; // $May 是整数
$Jax = (boolean) $May; // $Jax 是布尔值
2.自动转换
$foo = "1"; // $foo 是字符串 (ASCII 49)
$foo *= 2; // $foo 现在是整数 (2)
$foo = $foo * 1.3; // $foo 现在是浮点数 (2.6)
$foo = 5 * "10 Little May"; // $foo 是整数 (50)
$foo = 5 * "10 Small Jax"; // $foo 是整数 (50)
自动转换优先级: 布尔 > 整型 > 字符串
如果是纯字符串按ASCII进行比较
如果是纯数字字符串,先转数字再比较
六.伪类型
伪类型(Pseudo-types)是PHP里用于指示参数可以使用的类型和值。注意,它们不是 PHP 的原生类型
►mixed
说明一个参数可以接受多种不同的(但不一定是所有的)类型
►Number
说明一个参数可以是 integer 或者 float
►callback
在PHP 5.4引入callable类型前使用了callback伪类型,二者含义完全相同
►array | object
是参数既可以是 数组(array) 也可以是对象(object)
►void
作为返回类型意味着函数的返回值是无用的
►...
在函数原型中,表示等等的意思。当一个函数可以接受任意个参数时使用此变量名
七.获取/设定类型
1.settype($var,'type')设置变量类型,返回true与false
2.gettype($var) 获取变量类型,返回PHP八大类型的名称
※ 不要使用 gettype() 来测试某种类型,因为其返回的字符串在未来的版本中可能需要改变。此外,由于包含了字符串的比较,它的运行也是较慢的。使用 is_* 函数代替。
评论列表(0条)