php 的数据强制类型转换和默认类型转换
有几个月开发经验的朋友,都知道php属于弱类型语言,即不会强制开发者使用数据时指定其数据类型。
下面个人总结一下,php对数据类型的处理方式。
一。先说强制类型转换(也可理解成手动类型转换或指定数据类型):
PHP强制数据类型转换有三种转换方式:
1.用强制类型关健字
•(int)、(integer):转换成整形
•(float)、(double)、(real):转换成浮点型
•(string):转换成字符串
•(bool)、(boolean):转换成布尔类型
•(array):转换成数组
•(object):转换成对象
•(binary):字节码
示例:
|$num1=3.14;
|$num2=(int)$num1;
|var_dump($num1); //输出float(3.14)
|var_dump($num2); //输出int(3)
2.类型转换函数
intval()、floatval()、strval() 、settype(mixed var,string type)
示例:
|$str="123.9abc";
|$int=intval($str); //转换后数值:123
|$float=floatval($str); //转换后数值:123.9
|$str=strval($float); //转换后字符串:"123.9"
|$num4=12.8;
|$flg=settype($num4,"int");
|var_dump($flg); //输出bool(true)
|var_dump($num4); //输出int(12)
二。再说默认类型转换,规则:
+号,自动按数字运算。
.号,自动按字符串运算.
示例:
|$i=1;
|$a=$i.'a'; //结果1a
|$c=$i+'a';//结果1
|0==“abc"; //结果是true , 因为"abc”按转成数字参加比对
值的类型确定数据类型
$foo = "0"; // $foo is a string (ASCII 48)
$foo++; // $foo is the string "1" (ASCII 49)
$foo += 1; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is a double (15),因为后面的“10。。。”转成数据类型是10
$foo = 5 + "10 Small Pigs"; // $foo is an integer (15)
int,float,doblue 之间就长运算。
$foo = 1+1.34 ; // $foo 是float
三。类型相关的其它函数:
gettype 获得变量类型
settype 指定变量类型
get_resource_type 获得资源类型
四。有绝对的必要了解一下运算符优先级
最高优先级为一元运算符new , [ ] , ! , ~ , ++ , -- , 类型转换
接下来是二元算术运算符* , / , % , + , - , 字符串连接符.
再接下来是二元位运算符 << , >>
再接下来是比较操作符符< , > , <= , >= , == , !=(<>) , === , !==
再接下来是位运算符和逻辑运算符& , ^ , | , && , ||
再接下来是三目运算符?:
再接下来是函数调用
再接下来是赋值操作符= , += , -= , *= , /= , .= , %= , &= , |= , ^= , ~= , <<= , >>=
再接下来是and , xor , or,(这个我比较郁闷的,书的前面写了and和&&,or和||只是表达形式不一样,但是这里很明显优先级是不一样)
最后是一个列表分隔符,
有几个月开发经验的朋友,都知道php属于弱类型语言,即不会强制开发者使用数据时指定其数据类型。
下面个人总结一下,php对数据类型的处理方式。
一。先说强制类型转换(也可理解成手动类型转换或指定数据类型):
PHP强制数据类型转换有三种转换方式:
1.用强制类型关健字
•(int)、(integer):转换成整形
•(float)、(double)、(real):转换成浮点型
•(string):转换成字符串
•(bool)、(boolean):转换成布尔类型
•(array):转换成数组
•(object):转换成对象
•(binary):字节码
示例:
|$num1=3.14;
|$num2=(int)$num1;
|var_dump($num1); //输出float(3.14)
|var_dump($num2); //输出int(3)
2.类型转换函数
intval()、floatval()、strval() 、settype(mixed var,string type)
示例:
|$str="123.9abc";
|$int=intval($str); //转换后数值:123
|$float=floatval($str); //转换后数值:123.9
|$str=strval($float); //转换后字符串:"123.9"
|$num4=12.8;
|$flg=settype($num4,"int");
|var_dump($flg); //输出bool(true)
|var_dump($num4); //输出int(12)
二。再说默认类型转换,规则:
+号,自动按数字运算。
.号,自动按字符串运算.
示例:
|$i=1;
|$a=$i.'a'; //结果1a
|$c=$i+'a';//结果1
|0==“abc"; //结果是true , 因为"abc”按转成数字参加比对
值的类型确定数据类型
$foo = "0"; // $foo is a string (ASCII 48)
$foo++; // $foo is the string "1" (ASCII 49)
$foo += 1; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is a double (15),因为后面的“10。。。”转成数据类型是10
$foo = 5 + "10 Small Pigs"; // $foo is an integer (15)
int,float,doblue 之间就长运算。
$foo = 1+1.34 ; // $foo 是float
三。类型相关的其它函数:
gettype 获得变量类型
settype 指定变量类型
get_resource_type 获得资源类型
四。有绝对的必要了解一下运算符优先级
最高优先级为一元运算符new , [ ] , ! , ~ , ++ , -- , 类型转换
接下来是二元算术运算符* , / , % , + , - , 字符串连接符.
再接下来是二元位运算符 << , >>
再接下来是比较操作符符< , > , <= , >= , == , !=(<>) , === , !==
再接下来是位运算符和逻辑运算符& , ^ , | , && , ||
再接下来是三目运算符?:
再接下来是函数调用
再接下来是赋值操作符= , += , -= , *= , /= , .= , %= , &= , |= , ^= , ~= , <<= , >>=
再接下来是and , xor , or,(这个我比较郁闷的,书的前面写了and和&&,or和||只是表达形式不一样,但是这里很明显优先级是不一样)
最后是一个列表分隔符,