PHP基础笔记之类型
最近巩固下自己的 php,故而整理了下 php 相关的技术点,不求大而全,只求能离 php 更近一点。
本文为php基础
的开篇,只介绍类型基本信息及一些小技巧,不深入,后续专门写这几种类型的文章。
Basis 基本情况
参考 php 手册 - 类型
Boolean - 布尔
基本用于判断,也是最大的最简洁的使用。
1 |
|
转换
你可以用 (bool)
或者 (boolean)
把一个值转换成 boolean
类型。当然大多数情况你不需要强制转换。
当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。
以下情况会转化成 false
:
- 布尔值
FALSE
本身 - 整型值
0
(零) - 浮点型值
0.0
(零) - 空字符串
""
,以及字符串"0"
- 不包括任何元素的数组
array()
,[]
- 特殊类型
null
(包括尚未赋值的变量undefined
) - 从空标记生成的
SimpleXML
对象
除开以上情况外,其他值都视为 true
引用手册的示例:
1 |
|
Integer - 整型
是集合 ℤ = {..., -2, -1, 0, 1, 2, ...}
中的某个数。
可以使用十进制,十六进制,八进制或二进制(php 5.4.0+
)表示,前面可以加上可选的符号(-
或者 +
)。
引用手册的表达示例:
1 |
|
溢出
给定的一个数超出了 integer
的范围,将会被解释为 float
。同样如果执行的运算结果超出了 integer
范围,也会返回 float
。
String 字符串
由一系列的字符组成,其中每个字符等同于一个字节。详见字符串类型详解。
可以用"
或者'
来定义。
如果想使用其它转义序列例如
\r
或者\n
,使用反斜线\
来防止转义
示例:
1 |
|
解析变量
早双引号的定义下可以可以解析变量,数组和对象也可以解析。替代的方案 - 变量拼接
在遇到数组对象的索引是
string
类型时,需要用到{}
解析,如果找不到数组的索引或者找不到对象的属性 or 方法,不会解析。
如何不希望解析对象,数组,变量时,添加反引号\
防止转义
如:
1 |
|
Array 数组
是一个有序映射。映射是一种把 values
关联到 keys
的类型。
定义
可以用 array()
语言结构或者 []
(PHP 5.4.0+
) 来新建一个数组。它接受任意数量用逗号分隔的键(key) => 值(value)
对。
key
可以是 integer
或者 string
。
value
可以是任意类型。
此外 key
会有如下的强制转换:
- 包含有合法整型值的字符串会被转换为整型。例如键名
"8"
实际会被储存为8
。但是"08"
则不会强制转换,因为其不是一个合法的十进制数值。 - 浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名
8
.7
实际会被储存为8
。 - 布尔值也会被转换成整型。即键名
true
实际会被储存为1
而键名false
会被储存为0
。 Null
会被转换为空字符串,即键名null
实际会被储存为""
。
数组和对象不能被用为键名, 坚持这么做会导致警告:
Illegal offset type
。
如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了。
示例:
1 |
|
Object 对象
要创建一个新的对象 object
,使用 new
语句实例化.
1 |
|
转化
如果将一个对象转换成对象,它将不会有任何变化。
如果其它任何类型的值被转换成对象,将会创建一个内置类 stdClass
的实例。
如果该值为 NULL
,则新的实例为空。array
转换成 object
将使键名成为属性名并具有相对应的值。
注意:使用 PHP 7.2.0 之前的版本,数字键只能通过迭代访问。
1 |
|
Resource 资源
这个就不介绍了,参考Resource 资源类型。
Null
特殊的 NULL
值表示一个变量没有值。NULL
类型唯一可能的值就是 NULL
。
在下列情况下一个变量被认为是 NULL
:
- 被赋值为
NULL
。 - 尚未被赋值。
- 被
unset()
。
Callback / Callable php 5.4.0+
一些函数如 call_user_func()
或 usort()
可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。
示例:
1 |
|
类型转化
以上就是php类型
的基本信息。下面罗列些允许的强制类型转换:
(int)
,(integer)
- 转换为整形integer
(bool)
,(boolean)
- 转换为布尔类型boolean
(float)
,(double)
,(real)
- 转换为浮点型float
(string)
- 转换为字符串string
(array)
- 转换为数组array
(object)
- 转换为对象object
(unset)
- 转换为NULL
(PHP 5)
有效判断
在PHP
里面,我习惯用empty
和isset
作为判断依据,其中,
isset
判断是否定义empty
判断是否有效,也有isset
的作用
1 |
|
使用
empty
判断的时候一定要注意转化类型,比如字符串和数字
enjoy and happy coding!