is_numeric ,PHP基础知识之数据类型之间相互转换
昨天刚讲完PHP数据类型,今天就来讲讲PHP数据类型的转换。

转换变量或者值的类型,转换成其他数据类型的方法主要分为两大类:自动转换和强制转换。
(int)、(integer):转换成整形
(float)、(double)、(real):转换成浮点型
(string):转换成字符串
(bool)、(boolean):转换成布尔类型
(array):转换成数组
(object):转换成对象
一、自动转换类型:
自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。
自动转换,通常发生在不同数据类型的变量进行混合运算时。一般只有四种标量类型int、float、string、bool才会进行自动转换。

注:
字符串、数字参与运算,字符串先转换成数字;
转换后的数字从字符串开始的数值开始,不带小数点则为int,否则为false;
字符串"abcsd"直接转换成0;
整型转化为浮点型,由于浮点型的精度范围大于整型,所以转化后的精度不会改变;
浮点型转化为整型,将自动舍弃小数点部分,只保留整数部分;
如果一个浮点数超过整形数字的有效范围,其结果是不确定的。;
当字符串转化为数字时,转化后的数字是从字符串开始部分的数值型字符串,数值型字符串包括用科学计算法表示的数字。

NULL转为字符串,为空字符
二、强制类型转换:
自动类型转换是编译器根据代码的上下文环境自行判断的结果,有时候并不是那么“智能”,不能满足所有的需求;
如果需要,程序员也可以自己在代码中明确地提出要进行类型转换,这称为强制类型转换。
PHP数据类型强制转换有三种方式:
1、在转换的变量前加上目标类型:包括(int)整型、(bool)布尔型、(float)浮点型、(string)字符串、(array)数组、(object)对象;
<?php$num1=3.14;$num2=(int)$num1;var_dump($num1); //输出float(3.14)var_dump($num2); //输出int(3)?>
2、使用内置转换函数intval()、floatval()、strval()、boolval()
<?php$str="123.9abc";$int=intval($str); //转换后数值:123$float=floatval($str); //转换后数值:123.9$str=strval($float); //转换后字符串:"123.9"?>
以上两种方法均没有改变被转换变量本身的类型,而是转换得到新的类型数据值给变量,原始变量的类型和值不变。
3、setType() 会将变量本身类型改变成其他类型。
<?php$num=12.8;$flg=settype($num,"int");var_dump($flg); //输出bool(true)var_dump($num); //输出int(12)?>
注意:
类型转换中浮点型转换成整型,会舍弃小数部分,只保留整数。
字符串转换为数字时,转换后的数字是从字符串开始部分的数值型字符部分转换的。
自动类型转换 VS 强制类型转换
可以自动转换的类型一定能够强制转换,但是,需要强制转换的类型不一定能够自动转换;
现在我们学到的数据类型,既可以自动转换,又可以强制转换,以后我们还会学到一些只能强制转换而不能自动转换的类型。
可以自动进行的类型转换一般风险较低,不会对程序带来严重的后果,例如:int 到 double 没有什么缺点,float 到 int 顶多是数值失真。
只能强制进行的类型转换一般风险较高,或者行为匪夷所思,
就是很奇怪的一种转换,这会导致取得的值也很奇怪,
就是风险极高的一种转换,一般会导致程序崩溃。

使用强制类型转换时,程序员自己要意识到潜在的风险。
文章收集与网络,辛苦收集转载请备注出处全能大脸猫博客!
好了今天就分享到这里,拜拜我是你们的大朋友计算机爱好者大脸猫。
今日推荐:
PHP丨PHP基础知识之数据类型
PHP丨PHP基础知识之PHP基础入门——函数「理论篇」
你以为的程序员日常
下期预告(变量类型测试函数的使用方法)
is_bool():判定是否为bool
is_int();判定是否为整型
is_float():判定是否为浮点型
is_string():判定是否为字符串
is_array();判定是否为数组
is_object():判定是否为对象
is_resource():判定是否为资源
is_null():判断是否为空
is_scalar():判断是否为标量
is_numeric():判断是否为数字或数字字符串
is_callable():判断是否为有效函数名