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!