PHP 数据类型

PHP 支持 9 种原始数据类型。四种标量类型:boolean(布尔型)integer(整型)float(浮点型,也称作 double)string(字符串)三种复合类型:array(数组)object(对象)callable(可调用)最后是两种特殊类型:resource(资源)NULL(无类型)
伪类型:mixed(混合类型)number(数字类型)callback(回调类型,又称为 callable)array|object(数组 | 对象类型)void (无类型)

简介

变量的类型通常不是由程序员设定的,是由 PHP 根据该变量使用的上下文在运行时决定的。

boolean(布尔型)

要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。

当转换为 boolean 时,以下值被认为是 FALSE:

1
2
3
4
5
6
7
布尔值 FALSE 本身
整型值 0(零)
浮点型值 0.0(零)
空字符串,以及字符串 "0"
不包括任何元素的数组
特殊类型 NULL(包括尚未赋值的变量)
从空标记生成的 SimpleXML 对象 (没有验证过 ...)

例子

1
2
3
4
5
var_dump(0 == 'all'); // true
var_dump((int)'all'); // int(0)

var_dump(0 == (bool)'all'); // false
var_dump((int)true); // int(1)

integer(整型)

整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。要使用八进制表达,数字前必须加上 0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。用 (int) 或 (integer) 强制转换。

1
2
3
var_dump(PHP_INT_SIZE); // 结果:int(4) // 占用4个字节
var_dump(PHP_INT_NAX); // 结果:int(2147483647) // php中int不支持无符号
var_dump(PHP_INT_MIN); // 结果:int(-2147483648)

例子

1
2
3
echo (int) ( 1.6); // 显示 1  // 当从浮点数转换成整数时,将向下取整。
echo (int)@NaN . PHP_EOL; // int(0) // PHP 7.0.0 起,NaN 和 Infinity 在转换成 integer 时,不再是 undefined 或者依赖于平台,而是都会变成零。
echo (int) ( (0.1+0.7) * 10 ); // 显示 7 // 浮点数强制转换 integer,会出现不可预料的错误

待验证:在32位平台上int占4个字节,在64位平台上int占8个字节,16位平台是则分配2个字节
整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 9E18,除了 Windows 下 PHP 7 以前的版本,总是 32 位的。 PHP 不支持无符号的 integer。Integer 值的字长可以用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 来表示,最小值可以在 PHP 7.0.0 及以后的版本中用常量 PHP_INT_MIN 表示。

float(浮点型,也称作 double)