国强极客
有问题请加微信:guoqiang7585
国强极客

4、php数据类型 类型判断 类型转换

4、php数据类型 类型判断 类型转换

4.1.数据类型分类与概述

4.1.1.标量类型:

标量类型也可以理解为“基本类型”,“简单类型”。
标量类型包括如下4种:

字符串类型:String

就是一串字符串,当做一个整体,表示一个连续有确定顺序的字符串。
通常需要使用单引号或双引号来引起来,比如:
$name = “张三”;

整数类型:Int, Integer

浮点数: Float, Double

就是数学上的小数。

布尔类型: Bool, Boolean

这种数据类型只有两个数据:true, false
\(is_graduate = true;
\)hasMoney = false;

4.1.2.复合类型:

就是“数组”(Array)和“对象”(Object)两种。

4.1.3.特殊类型:

空类型: 有且只有一个数据可以使用,那就是null
资源类型:后续再说。。。。

4.2.整型integer,int

4.2.1.四种书写形式

可以有4种直接书写的形式:
10进制形式:
\(n1 = 123;
8进制形式:
\)n1 = 0123; //以0开头
16进制形式:
\(n1 = 0x12A34; //以0x开头,还可以有A,B,C,D,E,F这个6个“16进制数字”
2进制形式:
\)n1 = 0b1011011010; //以0b开头

4.2.2.进制的相互转换

直接通过系统函数来进行,能完成:
10进制转为2, 8, 16进制:

decbin():将10进制转为2进制
decoct():将10进制转为8进制
dechex():将10进制转为16进制

或:
2, 8, 16进制转为10进制:

bindec():将2进制数字字符串转为10进制
octdec():将8进制数字字符串转为10进制
hexdec():将16进制数字字符串转为10进制

总结一下进制转换的单词:
dec:10进制
oct: 8进制
hex: 16进制
bin: 2进制

进制转换案例:

表单上有个输入框,一个下拉列表(包含6种转换),以及一个按钮“转换”。实现可灵活进行进制转换的功能。

$n1 = "";
$n2 = "";
$zh = "";
if(isset($_POST['submit1'])){
    $n1 = $_POST['n1'];
    $zh = $_POST['zhuanhuan'];
    if($n1){    //判断如果有数据!
        if( $zh == "10to2" )
        {
            $n2 = decbin($n1);
        }
        if( $zh == "10to8" )
        {
            $n2 = decoct($n1);
        }
    }
    
}
<form action="" method="post">
        <input type="text" name="n1" value="<?php echo $n1;?>">
        <select name="zhuanhuan">
            <option value="10to2" <?php if($zh == "10to2"){ echo "selected"; } ?> >10to2</option>
            <!-- <option value="10to8" 如果$zh等于"10to8"就输出selected  >10to8</option> -->
            <option value="10to8" <?php if($zh == "10to8"){ echo "selected"; } ?> >10to8</option>
        </select>
        <input type="submit" name="submit1" value="转换">
        <input type="text" name="n2" value="<?php echo $n2;?>">
    </form>

4.3.浮点型double/float

浮点数就是相当于数学上的“小数”
两种书写形式:
常规形式(带小数点):

$f1 = 0.1;          //或者1.23;   123.0;

科学计数法形式(带e):

$f2 = 1.23e3;       //表示1.23 乘以10的3次方
$f3 = 123e2;        //这个也是浮点数,虽然其结果值是一个“整数”(12300)

特别注意:浮点数不要随便做相等比较():因为浮点数进行相等比较,是“不可靠”的:==
\(v1 = 0.1 + 0.2;
\)v2 = 0.3;
问:\(v1和\)v2相等吗?
那怎么办?
需要在考虑精度的基础上,将浮点数转换为整数,然后进行“比较大小”,此时,在精度范围内,如果相等,我们就认为是相等的。将上述程序改造为:

4.4.布尔型boolean

只有两个数据值: true, false(不区分大小写)
在需要当做“布尔值”进行判断或比较的时候,以下数据会被当作布尔值的 false:
false, 0, 0.0, “”, null, ‘0’, 空数组
其余都被当做布尔值的 true。
常见应用代码类似这样:

$v1 = 某某值; 
if(  $v1  ) {   //此时,如果$v1为上述值之一,就会当做false,不执行其中的代码。
。。。代码。。。
}
//而对于其他值,就会当做true,因此就会执行其中的代码。

4.5.字符串型string

可以使用单引号或双引号来表示(引起来)。
表示一串“连续的字符”,最短的字符串是“空字符串”,比如: $str1 = “”。
注意:这个不是空字符串: “ ”, 因为其中包括了1个空格字符。

$name  = “张三”;
$edu = ‘北京大学’;
$title = “关于微信应用的几个改进建议”;   //文章标题
$v1 = ‘’;       //这也是字符串(空字符串), 跟null不同!!!
$v2 = ‘123’;        //这还是字符串
$v3 = “false”;      //这仍然是字符串

特别注意:

双引号字符串中,如果出现“$”符号,则该符号后的连续字符(单词)会被识别为一个变量名。
如果识别成功(即确实存在该变量),则会将该变量转换为实际内容。
如果识别失败(即实际没有该变量),则会报错。

4.6.数组类型array

数组,就是将多个“数据”放在一起,排成一个有序序列,这个序列作为一个整体(里面包括了多个数据),就称为“数组”。比如:

$info1  =  array(‘张三丰’,  18,  “男” );
//新版本中,还可以这样写: [‘张三丰’,  18,  “男” ]
或:
$info2  =  array(‘name’ => ‘张三丰’,  ‘age’=>18,  ‘gender’ => “男” );
//新版本中,还可以这样写: [‘name’ => ‘张三丰’,  ‘age’=>18,  ‘gender’ => “男” ]

数组的赋值:

$数组变量[下标] = 一个值;

数组的取值:

形式为:$数组变量[下标]

比如:

 echo  $info1[0];       print_r( $info2[‘name’] );

数组的每一项,都是由“下标”和对应的“值”构成,其内部结构,如下所示:
\(info1内部结构:
![-w1194](media/15704998481652/15705037363239.jpg)
这种下标,通常称为“数字下标”。
\)info2内部结构:

这种下标,通常被称为“字符串下标”。

4.7.空类型NULL

只有一个值: null(不区分大小写)。

$v1 = null; //此时,具有变量$v1,但其中的数据是“空的”(没有数据)

空值变量,isset()判断的结果是false(即不存在)。

4.8.类型判断gettype()

gettype(): 获取一个变量的类型,结果为一个变量类型的名称(字符串)

$v1 = 10;
$r1 = gettype( $v1 );   //结果为:“integer”

$v2 = ‘abc’;
$r2 = gettype( $v2 );   //结果为:“string”

$v3 = 1.23;
$r3 = gettype( $v3 );   //结果为:“double”(返回的是double,但其实就是我们所说的float类型)

settype(): 设置一个变量的类型

$v1 = 10;       //此时,$v1中数据是整数类型
settype( $v1,  ‘string’);   //此时,$v1是字符串类型,即其中的数据变成了:“10”
echo  gettype( $v1 );   //”string”

var_dump(): 输出变量的“完整信息”,包括变量类型,长度(如果需要),内容

判断是否为某种类型(类型系列函数)

is_int() / is_integer():判断是否为整数类型
is_float():判断是否为浮点类型
is_bool():判断是否为布尔类型
is_string():。。。
is_array():。。。
is_numeric():判断是否为“数字”类型(含整数,小数,以及“纯数字字符串”)
is_object():

isset(): 判断一个变量是否存在,或变量中是否有数据,有则返回true,否则返回false。

如果变量中有数据,返回true
如果变量中没有有数据,返回false

empty():判断是否为“空的”。如果确实是“空的”,返回true,否则返回false。

如果变量中的数据为空的,返回true
如果变量中的数据不是空的,返回false
“空的”的意思,比较接近日常生活中的“没有”。以下值都是空的(empty):
0,0.0, “”, “0”, false, array(), //这几项,empty判断的结果都是true
而空(null)是一个计算机中的特殊概念,表示“完全不存在”,可以理解为“真空”。

4.9.类型转换

4.9.1.自动转换

我们无需做任何处理,而是,程序会根据运算时运算符所需要的数据类型进行转换。
如果参与运算的数据不是需要的类型,则会自动转换为需要的数据类型。

$v1 = 1 + “3”;  //结果是4;
$v2 = 1  .  “3”;    //“.”是字符串连接符,这里,1会被转换为字符串,结果是:“13”

典型自动转换:

转换为数字:
1+”2”           //3
“1” + “2”           //3
1 + ”2abc”      //3
1 + ”2abc34”        //3
1 + “abc”           //1
1 + “abc2”      //1
1.2 + “2”           //3.2
1.2 + “2.2abc”      //3.4
1.2 + “abc2.2”      //1.2
“1.2abc” + 2        //3.2
“1.2abc” + “2abc”   //3.2

规律:一个字符串当做数字,就会将该字符串的最前面的数字转换为数字值,如果没有,就为0

//转换为整数(直接保留整数部分):
10.8  %  3.6//1
“10.8”  %  “3.6”//1
“10.8”  %  “3.6abc”//1
“10.8ab”  %  “3.6cd”//1

4.9.2.强制转换:

人为使用强转换语法进行转换,比如:

$v1 = (int) “1”;    //结果,$v1是整数类型的1
$v2 = (float)  “1.23”;  //结果,$v2是浮点类型的1.23
$v3 = (string) $v1; //结果,$v3是字符串“1”
赞赏
对内容有疑问,请加我微信:guoqiang7585

国强极客

文章作者

博客站长,有问题请加微信【guoqiang7585】。

国强极客

4、php数据类型 类型判断 类型转换
4.1.数据类型分类与概述 4.1.1.标量类型: 标量类型也可以理解为“基本类型”,“简单类型”。 标量类型包括如下4种: 字符串类型:String 就是一串字符串,当做一个整体,表示一个连续有确定…
扫描二维码继续阅读
2019-11-30