NULL
1.未定义和unset()的变量都将解析为值null
2.null
类型只有一个值,就是不区分大小写的常量 null
3.使用 (unset) $var
将一个变量转换为 null 将不会删除该变量或 unset 其值。仅是返回 null
值而已
Boolean
1.可以用bool强制类型转换
2.var_dump((bool) ""); // bool(false)
var_dump((bool) "0"); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
Integer
1.如果给定的一个数或者运算结果超出了int的范围,将会被解释为float
2.PHP 没有 int 除法取整运算符,要使用 intdiv() 实现。 1/2
产生出 float 0.5
。 值可以舍弃小数部分,强制转换为 int,或者使用 round() 函数可以更好地进行四舍五入
Float
1.精度有限,所以在运算过程中可能会出现结果与预想不同的问题
String
1.转义表示 ${}或者{$}
Array
1.数组内部的组合为键值对,key可以是int或string,value可以是任意类型
2.此外 key 会有如下的强制转换:
- String 中包含有效的十进制 int,除非数字前面有一个
+
号,否则将被转换为 int 类型。例如键名"8"
实际会被储存为8
。另外,"08"
不会被强制转换,因为它不是一个有效的十进制整数。 - Float 也会被转换为 int ,意味着其小数部分会被舍去。例如键名
8.7
实际会被储存为8
。 - Bool 也会被转换成 int。即键名
true
实际会被储存为1
而键名false
会被储存为0
。 - Null 会被转换为空字符串,即键名
null
实际会被储存为""
。 - Array 和 object 不能 被用为键名。坚持这么做会导致警告:
Illegal offset type
。
Object
Enum
将 enum 转换为 object 不会有变化。 将 enum 转换为 array, 纯粹枚举会创建单个 name
键的数组; 回退枚举创建带 name
和 value
键的数组。 其他类型转换都会导致错误。