(一)显式转换(强制转换)
1)临时转换:可使用数据类型强制转换,也可以使用函数进行临时转换
2)使用函数settype(参数1,参数2),参数1指的是变量名,参数2指的是想要转换成的数据类型
<?php
/*
* 数据类型之间的转换 ,显示转换(强制转换)
* 临时转化可以用数据类型直接转化,也可以使用函数进行转化
* 永久转化需使用settype()系统内置的函数
*/
//使用数据类型进行强制转换
$a=123;
echo var_dump((float)$a);
echo var_dump((string)$a);
echo var_dump((bool)$a);
echo var_dump((int)$a);
//使用函数进行临时转换
echo var_dump(intval($a));
echo var_dump(floatval($a));
echo var_dump(doubleval($a));
echo var_dump(boolval($a));
echo var_dump(strval($a));
//永久转换
settype($a,'string');
echo var_dump($a);
settype($a,'float');
echo var_dump($a);
settype($a,'int');
echo var_dump($a);
settype($a,'bool');
echo var_dump($a);
运行结果对应如下
(二)隐式转换(自动转换)
/*
* 其他类型转化为数值类型
* 布尔类型boolean转化为数值类型 true=>1 ,false=>0
* 空类型转化为数值类型null=>0
* 字符串类型转化为数值类型遵循原则1)开头如果是字母的直接转化为0 2)开头如果是以数据开头的截取到第一个非法数字结束
* 空数组类型不可转化为0,尽管编译器不会报错,但浏览器的解析结果会报错
*/
$a=1+true;
$b=1+false;
$c=1+null;
$d=1+'abcde';
$e=1+'520abcd';
$f=1+'5a2b0cd';
echo '其他类型转化为数值类型:<br/>';
echo $a,'<br/>';
echo $b,'<br/>';
echo $c,'<br/>';
echo $d,'<br/>';
echo $e,'<br/>';
echo $f,'<br/><br/>';
/*
* 其他类型转化为字符串类型
* 布尔类型转化为字符串类型 false=>空字符串
* 空类型转化为字符串类型null=>空字符串
* 数组类型转化为字符串类型为array
* 资源类型转化为字符串类型为resource id #3
* 对象类型不可转化为字符串类型
*/
echo '其他类型转化为字符串类型:<br/>';
echo 'I Love You!',false,'Yangjiaxiu','<br/>';
echo 'I Love You!',null,'Yangjiaxiu','<br/>';
$arr=array();
echo $arr,'<br/>';
$res=fopen('source.txt','r');
echo $res,'<br/><br/>';
/*
* 其他类型转化为布尔类型
* 数值类型转化为布尔类型,除了0,在条件选择句中都转化为true,0=>false
* 空字符串类型转化为false
* 空数组类型转化为false
*/
$str='';
echo '其他类型转化为布尔类型:<br/>';
if(0){
echo 'hailin是个大帅哥<br/>';
}else{
echo 'hailin是个帅哥<br/>';
}
if(520){
echo 'hailin是个大帅哥<br/>';
}else{
echo 'hailin是个帅哥<br/>';
}
if($str){
echo 'hailin是个大帅哥<br/>';
}else{
echo 'hailin是个帅哥<br/>';
}
if($arr){
echo 'hailin是个大帅哥<br/>';
}else{
echo 'hailin是个帅哥<br/>';
}
运行结果对应如下:
除此之外,还有is_int(),is_string(),is_array(),is_resource(),is_object(),is_null(),is_numeric()等函数检测对应变量是否是整型,字符串型,数组型等等,最后检验是否为数值,若是则返回ture,不是则返回false,这些函数会在选择条件句中作为条件存在,请牢记。