0x01 自动转换
运算过程需要的数据类型和提供的数据类型不一致,将数据类型转为自己需要的类型
<?phpheader('content-type:text/html;charset=utf-8');echo '1aa'+'7c';echo '<br>';
?>
加号做数字运算,会将字符串转为数字
0x02 强制转换
强制将数据转换成自己想要的类型
语法:(自己想要的数据类型)数据
<?phpheader('content-type:text/html;charset=utf-8');$num=-12;var_dump((bool)$num);echo '<br>';$num2=12.6;var_dump((int)$num2);echo '<br>';
?>
0x03 使用函数转换
- intval():转为整形
<?php$str='1234abc';
$a=intval($str);
echo $a;
echo gettype($a);
echo "<br />";$str='a1234abc';
$a=intval($str);
echo $a;
echo gettype($a);
echo "<br />";
字符串转整形只取前面的数字,如果前面没有数字结果是0
- floatval():转成浮点型
<?php$str='1234abc';
$a=floatval($str);
echo $a;
echo gettype($a);
echo "<br />";$str='a1234abc';
$a=floatval($str);
echo $a;
echo gettype($a);
echo "<br />";
转换的规则和int类型一样,只不过类型不一样
- strval()转成字符型
<?php$a=1234;
$str=strval($a);
echo $str;
echo gettype($str);
echo "<br />";$a=0;
$str=strval($a);
echo $str;
echo gettype($str);
echo "<br />";
0x04 其他数据类型和bool转换
1、字符串转为bool类型
字符串为空和0时转换为false,其他都转为true
<?phpheader('content-type:text/html;charset=utf-8');//字符串转换var_dump((bool)'abcd');echo '<br>';var_dump((bool)'');echo '<br>';var_dump((bool)'0');echo '<br>';var_dump((bool)'0.0');echo '<br>';var_dump((bool)'00');echo '<br>';var_dump((bool)'false');echo '<br>';var_dump((bool)"false");echo '<br>';var_dump((bool)'true');echo '<br>';var_dump((bool)"true");echo '<br>';var_dump((bool)'null');echo '<br>';var_dump((bool)"null");echo '<br>';var_dump((bool)'12abcd');echo '<br>';//数字和bool类型的转换?>
注意:只有0是false,0.0、00就不是了
2、数字转为bool类型
数字只有值为0的情况为false,其他都是true
<?phpheader('content-type:text/html;charset=utf-8');var_dump((bool)0);echo '<br>';var_dump((bool)0.0);echo '<br>';var_dump((bool)00);echo '<br>';var_dump((bool)1);echo '<br>';var_dump((bool)-1);echo '<br>';?>
3、数组
数组只有创建时没有赋值时为false,其他为true
<?phpheader('content-type:text/html;charset=utf-8');var_dump((bool)array());echo '<br>';var_dump((bool)array(1));echo '<br>';
?>
4、null
转为false
<?phpheader('content-type:text/html;charset=utf-8');var_dump((bool)null);echo '<br>';var_dump((bool)NULL);echo '<br>';
?>