php 数据类型转换
运算数在参加运算的时候,需要将类型转为相同,然后才进行计算。在上面的例子中,第一个运算中,会先将$int转成浮点,然后和$f1相加,第二个运算中,会先将$str转成int类型,然后和$int相加。
在这个过程中,出现了类型转换。在上面的例子中,转换是系统自己进行的。
弱类型和强类型。
在定义一个变量的时候,不需要指定变量的类型,它的类型由程序的上下文来决定的,比如$a = 10,那就意味着$a是一个整型,$a = ‘hello’,就意味着$a是一个字符串。
像这种确定变量类型的方式就是弱类型。
与之对应的就是强类型,比如C、java、C#等。
变量在参与运算的时候,类型发生了变化,但变量本身的类型并没有改变。
注意两点:
Ø 在参与运算的多个操作数据之间,运算之前都需要将数据类型转成一致才可以。
Ø 这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式本身的类型。
通常有两种方式来完成类型转换:
Ø 强制转换
Ø 自动转换
强制转换,我们在需要转换的变量之前,使用类型关键字,用括号括起来。
Int 或者 interger
Float
Boolean
String
Array
Object
在PHP中,实现强制转换,在要转换的变量之前加上用括号括起来的目标类型即可。
Ø (int), (integer) - 转换为 整型(integer)
Ø (bool), (boolean) - 转换为 布尔型(boolean)
Ø (float), (double), (real) - 转换为 浮点型(float)
Ø (string) - 转换为 字符串(string)
Ø (array) - 转换为 数组(array)
Ø (object) - 转换为 对象(object)
Ø (unset) - 转换为 NULL
将其他类型转为资源类型是没有意义的。
强制转换在程序中,应用并不多,大部分情况下,使用自动类型转换就可以完成业务逻辑。
转换规则
转换成字符串
Ø 一个 整数 或 浮点数 被转变为数字的字面样式的字符串
Ø 一个boolean TRUE 值被转换成 字符串"1"。 Boolean FALSE 被转换成""
Ø 数组转换成 字符串 "Array"
Ø 资源总会被转变成"Resource id #1"这种结构的 字符串
Ø NULL 总是被转变成空的字符串。
转换成整型
Ø 从布尔值转换,FALSE 将产生出 0(零),TRUE 将产生出 1(壹)。
Ø 从浮点数转换,当从浮点数转换成整数时,将向下取整。
从字符串转换,如果字符串 没有包含 '.','e'或'E' 并且数字值符合整数类型的限定 ,可被认定是一个 integer, 否则被认定为一个float。字符串的开始部分给定了它的值,如果 字符串 以合法的数字开始,这个数字可直接使用。 否则,值就是 0 。
转换成布尔型
当转换为 boolean 时,以下值被认为是 FALSE:
Ø 布尔值 FALSE 自身
Ø 整型值 0 (零)
Ø 浮点型值 0.0 (零)
Ø 空字符串, 以及 字符串 "0" (注意"00"、"0.0"被认为是TRUE)
Ø 空数组
Ø 特殊类型 NULL (包括尚未设定的变量)
所有其它值都被认为是 TRUE(包括对象和资源)。
1 和其它非零值(不论正负)一样,被认为是 TRUE!
☞ 注意细节
Ø HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。
Ø FALSE 是一个布尔值而 "false" 是一个字符串。
数据类型相关函数
Ø Var_dump:打印变量的详细信息,包括类型和值
Ø Gettype:获得类型
Ø Settype:设置类型
Ø Is系列:其中is_array会经常用到
Ø Isset:检查一个变量是否存在(设置)
Ø Empty:检查一个变量是否为空
对于isset而言,只要声明过(有值),不管它的值是什么,那么就返回true
对于empty而言,相当于 boolean(变量) ,然后再来取反。
简单例子
注意,在使用empty时候,要结合具体的业务逻辑类分析。
文章来至:http://www.codexueyuan.com/learn/learn-detail30-phpsilxzh