php 判断数据类型 自动/强制 类型转换
使用is_* 系列函数。 is_types这一系列的函数,来进行判断某个东西是不是某个类型。如果是这个类型返回真,不是这个类型返回假。
is_int 是否为整型
is_bool 是否为布尔
is_float 是否是浮点
is_string 是否是字符串
is_array 是否是数组
is_object 是否是对象
is_null 是否为空
is_resource 是否为资源
is_scalar 是否为标量
is_numeric 是否为数值类型
is_callable 是否为函数
is_* 系列函数有个特点,就是如果是这个类型就返回的是真。不是这个数据类型就返回的是假
$fo = false;
if(is_bool($fo)){
echo '执行真区间';
}else{
echo '执行假区间';
}
//检查未声明的变量$p是否为空,为空就执行真区间
if(is_null($p)){
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "<br/>";
//字符串类型的数值,看看执行的是真还是假
$str = '18.8';
if(is_numeric($str)){
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "<br/>";
//把sca的值换成整型、浮点、布尔和字符串试试
$sca = true;
//如果为标量,执行真区间
if(is_scalar($sca)){
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "<br/>";
//换成echo,is_int试试,为什么echo执行假区间呢?
if(is_callable('var_dump')){
echo '执行真区间';
}else{
echo '执行假区间';
}
?>
类型转换:
<?php
//布尔变整型参与运算
$num = true;
$result = $num + 10;
//$result 结果为整型的11,因为$fo 被强制转换为 1 来进行运算了
//如果$fo的值为0
var_dump($result);
//空字符串、空数组、null 都为false
//字符串类型
$str = '249字符串';
$result = $str + 1;
//结果为250。因为将$str变为了整型的249来进行运算,不过必须是第一位,放在其他位置上就没有用了。
var_dump($result);
//强调下,虽然这么做,目前执行出来的结果没有什么问题,但是如果在项目中很有可能给后期留下很大隐患,
尽量用同类型的来进行各种运算比较好!!!
?>
强制类型转换有三种方式:
1、 intval()、floatval()、strval()
<?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);
?>
2、变量前加上()里面写上类型,将它转换后赋值给其他变量
<?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);
//其他的操作方式,按照文字总结的规律你来试试
?>
3、settype(变量,类型) 直接改变量本身
<?php
//定义浮点变为整型
$fo = 250.18;
//settype第二个参数是int,你实验的时候要记得第二个参数要为字符串类型
settype($fo,'int');
//输出看看结果
var_dump($fo);
?>
还没有评论,来说两句吧...