文章目录
自动转换(隐式转换)
1.程序会根据上下文环境自动的进行转换
2.其它类型转换成数值型
true->1
false->0
null->0
字符串如果以非法数值开始,直接转换成0;
如果字符串以合法数值开始,一直取到第一个非法数值结束
true->1 false->0 null->0 字符串如果以非法数值开始,直接转换成0; 如果字符串以合法数值开始,一直取到第一个非法数值结束
例子:
<?php echo 1+3,'<br/>';//4 echo 1+2.3,'<br/>';//3.3 echo 1+true,'<br/>';//true->1 echo 1+false,'<br/>';//false->0 echo 1+null,'<br/>';//null->0 echo 1+'3king','<br/>';//3king->3 echo 1+'2a3b4c','<br/>';//2a3b4c->2 echo 1+'21abs','<br/>';//21abs->21 echo 1+'2e2a3c'.'<br/>';//2e2a3c->200 echo 1+'true';//'true'->0
3.其它类型转换成字符串型
数值型直接转换成数值本身
true->1
false->空字符串
null->空字符串
数组->Array
资源->Resource id #数字
对象不能直接转换成字符串
例子:
<?php //其他类型转换为字符串型 echo 'king<br/>'; echo 123,'<br/>'; echo 23.4,'<br/>'; echo true,'<br/>'; echo '@',false,'@','<br/>';//空字符串 echo '@',null,'@';//空字符串 //对象不能直接转换成字符串,会报致命错误,程序终止执行 //$obj=new Stdclass(); //echo $obj;
4.其它类型转换成布尔类型
0->false
0.0->false
空字符串''或者""或者'0'或者"0"->false
null->false
空数组array()->false
例子:
<?php
header('content-type:text/html;charset=utf-8');
//测试其他类型转换为布尔类型
//转换成布尔类型假的有哪些情况,其它都会转换成布尔类型的true
//$dream=true;
//if($dream){
// echo '买大G';
//}else{
// echo 'codeing吧';
//}
$var = 123;
$var = -12;
$var = 1.2;
$var = 0;//false
$var = 0.0;//false
$var = '';//false
$var = "";//false
$var = ' ';
$var = 'false';
$var = '0';//false
$var = "0";//false
$var = '0.0';
$var = null;//false
$var = array();//false
if($var){
echo '真的';
}else{
echo '假的';
}
强制转换(显示转换)
1.临时转换
注意:临时转换不改变变量本身的类型
(变量类型)$变量名称
整型:(int)$变量名称|(integer)$变量名称
浮点型:(float|double|real)$变量名称
字符型:(string)$变量名称
布尔型:(bool|boolean)$变量名称
空:(unset)$变量名称
数组:(array)$变量名称
对象:(object)$变量名称
例子:
<?php
//临时转换的例子
//转换为整型
$var = true;
var_dump($var);//bool(true)
echo '<br/>';
$res=(int)$var;
var_dump($res);//int(1)
echo '<br/>';
var_dump($var);//bool(true),临时转换不改变变量本身类型
echo '<br/>';
var_dump((int)$var,(integer)$var);
echo '<br/>';
//临时转换为浮点类型
var_dump((float)$var,(double)$var,(real)$var);
echo '<br/>';
//舍掉小数部分
$var = 3.6;
var_dump((int)$var,(integer)$var);
echo '<br/>';
//临时转换为字符串
$var=true;
var_dump((string)$var);
echo '<br/>';
//临时转换成布尔类型
$var = '3king';
var_dump((bool)$var,(boolean)$var);
echo '<br/>';
//临时转换为空
$var = 'hello';
var_dump((unset)$var);
echo '<br/>';
//临时转换为数组
$var=123;
var_dump((array)$var);//array(1) { [0]=> int(123) }
echo '<br/>';
//临时转换成对象
$var = 122.3;
var_dump((object)$var);
通过系统函数实现
intval($var)返回变量转换成整型之后的值
floatval($var)|doubleval($var)返回变量转换成浮点型的值
strval($var)返回变量转换成字符串的值
boolval($var)返回变量转换成布尔类型的值
例子:
<?php //通过系统函数完成临时转换 $var = '3king'; $res = intval($var); var_dump($res);//int(3) echo '<br/>'; var_dump(floatval($var),doubleval($var));//float(3) float(3) echo '<br/>'; var_dump(boolval($var)); echo '<br/>';//bool(true) $var = true; var_dump(strval($var));//string(1) "1"
test.php
<?php $str = 'A3eb6'; echo floatval($str),'<br/>';//0 echo intval($str),'<br/>';//0 echo strval($str),'<br/>';//A3eb6 echo boolval($str);//1 echo '<hr/>'; $str="2e3a5s"; $arr=array(); var_dump((int)$str);//int(2) ////php版本7$str转换int类型时结果为int(2000) echo '<br/>'; var_dump((float)$str);//float(2000) echo '<br/>'; var_dump((bool)$str);//bool(true) echo '<br/>'; var_dump((unset)$str);//NULL echo '<hr/>'; var_dump((int)$arr);//int(0) echo '<br/>'; var_dump((float)$arr);//float(0) echo '<br/>'; var_dump(boolval($arr));//bool(false) echo '<br/>'; var_dump((unset)$arr);//NULL
2.永久转换
settype($var,$type)设置变量的类型
gettype($var)返回变量的类型
注意:不要使用gettype得到变量的类型,因为后续可能返回值会改变
例子:
<?php //永久转换的例子 //得到变量的类型gettype,不要使用 gettype() 来测试某种类型,因为其返回的字符串在未来的版本中可能需要改变。此外,由于包含了字符串的比较,它的运行也是较慢的。 //使用 is_* 函数代替。 $var = 123; var_dump($var);//int(123) echo '<br/>'; echo gettype($var);//integer echo '<br/>'; $var = true; echo gettype($var);//boolean echo '<hr/>'; //永久转换settype($var,type) $var = 123; var_dump($var); //int(123) echo '<br/>'; //对$var做了一个手术,变成布尔类型 settype($var,'bool'); var_dump($var);//bool(true) /* type 的可能值为: “boolean” (或为“bool”,从 PHP 4.2.0 起) “integer” (或为“int”,从 PHP 4.2.0 起) “float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用) "string" "array" "object" “null” (从 PHP 4.2.0 起) */ echo '<br/>'; $var = '3king'; settype($var,'int'); var_dump($var);//int(3) echo '<br/>'; $var = 12.3; settype($var,'int'); var_dump($var);
3.通过变量函数库检测变量的类型
is_*($var)检测的结果要么true,要么false
----------------------------------
整型 is_int()|is_integer()|is_long()
浮点型 is_float()|is_double()|is_real()
字符串型 is_string()
布尔类型 is_bool()
标量类型 is_scalar()
空null is_null()
数组 is_array()
对象 is_object()
资源 is_resource()
是否为数值型或者字符串形式的数值 is_numeric()
type.php
<?php
//通过变量函数库检测变量的类型,is_*
$var = 123;
var_dump(is_int($var));//bool(true)
echo '<hr/>';
//检测是否为整型
$var = 0 ;
var_dump(
is_int($var),
is_integer($var),
is_long($var)
);
echo '<hr/>';
//检测是否为浮点型
$var=12.3;
var_dump(
is_float($var),
is_double($var),
is_real($var)
);
echo '<hr/>';
//是否为字符串型
$var = '3king';
var_dump(
is_string($var)
);
echo '<hr/>';
//是否是布尔类型
$var=false;
var_dump(
is_bool($var)
);
echo '<hr/>';
//是否是标量类型
$var=123;
var_dump(is_scalar($var));
echo '<hr/>';
//是否为空
$var=null;
var_dump(is_null($var));//true
echo '<hr/>';
//是否为数组
$var=array();
var_dump(is_array($var));
echo '<hr/>';
//是否为对象
$var=new StdClass();
var_dump(is_object($var));
echo '<hr/>';
//是否为资源
$var=fopen('./type.php','r');
var_dump(is_resource($var));
echo '<hr/>';
//是否为数值型或者是字符串形式的数值
//123 23.4 '123.34' '23'
$var=123;
$var=23.4;
$var='0';
$var='2.3';
var_dump(is_numeric($var));
test.php
<?php $email = '10000@imooc.com'; settype($email,'int'); var_dump($email); echo '<br/>'; settype($email,'bool'); var_dump($email); echo '<br/>'; settype($email,'float'); var_dump($email); echo '<hr/>'; $str = '2hello'; $str = intval($str); var_dump($str); echo '<br/>'; $str = floatval($str); var_dump($str); echo '<br/>'; $str = boolval($str); var_dump($str); echo '<br/>';
MySQL学习笔记