来源:自学PHP网 时间:2018-02-09 16:45 作者: 阅读:次
[导读] PHP中文网教程为您提供《php入门教程之一周学会PHP》之 php数据类型之自动转换和强制转换 章节的在线实战教程供您学习,你可以进行笔记、提问、讨论和资料下载...
PHP在PHP 5.x阶段都是完全的弱类型的编程语言。所谓弱类型,就是在声明变量的时候,不需要指定变量的类型。我要声明一个整型的变量,我不用在前面非得写上类型,再写变量。 而PHP 7 的性能有很大的提高。实际测试的结果,PHP 7的性能与PHP5.6相比,提升了性能接近200%。在PHP 7 中有些地方,我们可以强制指定类型,也可以不用强制指定类型来声明变量。 我们接来下来讲强制类型转换和自动类型转换两个部份。 【默写级别】布尔值的自动类型转换、强制类型转换的英文单词 布尔值的自动类型转换 自动类型转换,就是数据类型在某些情况下,自动会变为其他的类型参与运算。自动类型转换的发生时机是:运算和判断的时候某些值会自动进行转换。 下面的情况是布尔值判断时的自动类型转换: 1,整型的0为假,其他整型值全为真 2, 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。 3,空字符串为假,只要里面有一个空格都算真。 4,字符串的0,也将其看作是假。其他的都为真 5,空数组也将其视为假,只要里面有一个值,就为真。 6,空也为假 7, 未声明成功的资源也为假 我们针对以上针理的规则一项一项来做实验看看结果。 1,整型的0为假,其他整型值全为真 <?php //整型的0,换成整型的其他值试试 $bool = 0; if($bool){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?> 2, 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。 <?php //浮点类型的的0,换成其他值试试 $bool = 0.0; if($bool){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?> 3,空字符串为假,只要里面有一个空格都算真。 <?php //空字符串,中间没有空格哟。实验完加个空格试试 $str = ''; if($str){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?> 4,字符串的0,也将其看作是假。其他的都为真 <?php //0这个字符串哟,试试其他值看看 $str = '0'; if($str){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?> 5,空数组也将其视为假,只要里面有一个值,就为真。 <?php //这个数组当中啥也没放 $arr = array(); if($arr){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?> 6,空也为假 <?php //声明了一个空的变量$bool $bool = null; if($bool){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?> 7, 未声成功的资源也为假 <?php //下面这段代码会显示警告,可忽略。暂时只需要对着实验知道效果即可:未声成功的资源也为假 //下面这一块了解意思就行:打开adasfasfasfdsa.txt这个不存在的文件 $res = fopen('adasfasfasfdsa.txt','r'); if($res){ echo '美女美女我爱你'; }else{ echo '凤姐凤姐爱死我,执行假区间咯'; } ?> 其他类型的自动类型转换 自动类型转换在运算时也可以发生。跟所有我们总结的规律和观点一样:先总结、后实验。 只有标量在运算时会产生以下的自动类型转换: <?php //布尔变整型参与运算 $fo = true; $result = $fo + 10; //$result 结果为整型的11,因为$fo布尔的true变为了1 //如果$fo的值为0 var_dump($result); //字符串类型 $str = '419不要爱'; $result = $str + 1; //结果为420。因为将$str变为了整型的419参与运算 //将419放在字符串中间和结尾试试 var_dump($result); ?> 总结: 布尔值的true参与运算是会变成整型或者浮点的1布尔值的false参与运算是会变成整型或者浮点的0字符串开始处是整型或浮点类型的字符,会转成对应的类型参与运算 强制类型转换 强制类型转换有三种方式: 1.用后面的三个函数可以完成类型转换,intval()、floatval()、strval() 2.变量前加上()里面写上类型,将它转换后赋值给其他变量 3.settype(变量,类型) 直接改变量本身 我们来进行实验: <?php $float = 1.23; $result = intval($float); //看看结果是不是变了? var_dump($result); //鸭脖子为整型的5 $yabozi = 5; $re = floatval($yabozi); var_dump($re); //定义整型的变量 $yabozi = 23; $bian = strval($yabozi); //强制变成字符串试试 var_dump($bian); ?> 变量前加上()里面写上类型,将它转换后赋值给其他变量 <?php //定义一个变量,我们来变化一下试试 $transfer = 12.8; //把浮点变为整型 $jieguo = (int)$transfer; var_dump($jieguo); //把浮点变为布尔 $jieguo = (bool) $transfer; var_dump($jieguo); //把布尔变整型 $bool = true; $jieguo = (int)$bool; var_dump($jieguo); //把浮点变数组 $fo = 250; $jieguo = (array)$fo; var_dump($jieguo); //其他的操作方式,按照文字总结的规律你来试试 ?> settype(变量,类型) 直接改变量本身 <?php //定义浮点变为整型 $fo = 250.18; //settype第二个参数是int,你实验的时候要记得第二个参数要为字符串类型 settype($fo,'int'); //输出看看结果 var_dump($fo); ?> 【你试试】以下是强制类型转换时的特点,每一项你做实验看看对不对: 1.空转为整型会为整型的0 2.空转为浮点会为浮点的0 3.空转为字符串会为空字符串‘’ 4.浮点的123.0转为字符串会为字符串123 5.浮点的123.2转为字符串会为字符串的123.2 6.浮点即使小数点再大,它都会被干掉,会舍掉小数点后面的值 7.如果字符串转为整型的时候,如果数值在前面,会将前面的数值拿出来做为整型的转换值。 8.settype(变量,'null'); 等价于 unset()一个变量 9.$目标变量 = (类型)$操作变量 只会改变目标变量的类型,不会改变原变量的类型,Settype是改变原值 <?php //小可爱,记得自己做实验,验证上面的9点哟 $t=12.9; settype($t,'int'); var_dump($t); ?> set 读音:[sɛt] type 读音:[taɪp] |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com