温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP的数据类型

发布时间:2020-10-07 14:05:00 来源:网络 阅读:520 作者:pcn01 栏目:web开发

PHP的数据类型




整体划分

·        标量类型: int, float, string, bool

·        复合类型: array, object

·        特殊类型: null, resouce

整数类型int integer

3种整数表示法

·        十进制写法:123:

        $n1 = 123;

·        八进制写法: 0123

        $n2 = 0123;

·        十六进制写法: 0x123

        $n3 = 0x123;

进制转换问题

先学习几个单词:

dec: 十进制

bin:二进制

oct:八进制

hex:十六进制

·        十进制转二进制decbin(),除2取余倒着写

$v1 = decbin(123); //注意:参数必须是10进制数字,转换后的结果必然是二进制字符串。

PHP的数据类型

 

我们也可以通过手工的方式来完成10进制转2进制的完整过程。

基本做法是:将10进制数字除以2,并取得余数,如果除得的商不为0,则继续除以2,并继续去的余数,直到商为0。然后将所有取得的余数,按“倒序写出”,就是对应的2进制数字:

PHP的数据类型

 

·        十进制转八进制decoct(),除8取余倒着写

使用php系统函数: 

$r1 =  decoct(十进制数字)     //结果是一个8进制数字字符串。

PHP的数据类型

我们也可以通过手工的方式来完成10进制转8进制的完整过程。

基本做法是:将10进制数字除以8,并取得余数,如果除得的商不为0,则继续除以8,并继续去的余数,直到商为0。然后将所有取得的余数,按“倒序写出”,就是对应的8进制数字:

PHP的数据类型


·        十进制转十六进制dechex(),除16取余倒着写

16进制的数字包括如下(从0开始):

0     1     2     3     4     5     6     7     8     9     A     B     C     D     E     F

对应10进制其实是:

0     1     2     3     4     5     6     7     8     9     10    11    12    13    14    15

 

系统函是:dechex(十进制数字),结果是16进制数字字符串。

PHP的数据类型

手工运算:

基本做法是:将10进制数字除以16,并取得余数,如果除得的商不为0,则继续除以16,并继续去的余数,直到商为0。然后将所有取得的余数,按“倒序写出”,就是对应的16进制数字:

 

PHP的数据类型

 

·        二进制转十进制bindec(),每位数值乘以2的权值然后相加

先理解一个“权值”概念:

就是某位数字上的该数字所代表的数的大小。比如:

10进制数字1234,其代表:1*10 3+2*102 + 3*101  +4*100  =  1000+ 200 + 30 + 4;

这里,10 3 102101,等等,就称为权值。

 

二进制转10进制,就是将每位数值乘以对应位上的权值,然后相加得到的结果。

用系统函数是:

$v1  = bindec(“二进制数字字符串”) //得到的结果是10进制数字

PHP的数据类型

结果:s1 = 86 , 其类型为:integer

 

手工转换:

二进制数字的权值,从右到左,分别是:

20 21 22 23 24 25.....

即分别是(10进制大小):

1 2  4  8  1632

手工计算:

1010110

=1*26 + 0*XX  + 1*24 + 0*XX  + 1*22 + 1*21 + 0 //说明,其中XX表示无所谓的数字值

=64 + 0 + 16 + 0 + 4 + 2 + 0

=86

 

·        八进制转十进制octdec() ,每位数值乘以8的权值然后相加

用系统函数是:

$v1  = octdec(“8进制数字字符串”) //得到的结果是10进制数字

PHP的数据类型

结果:s1 = 668,其类型为:integer


手工算法统2进制转换为10进制,略。

·        十六进制转十进制hexdec() ,每位数值乘以16的权值然后相加

用系统函数是:

$v1  = hexdec(“16进制数字字符串”) //得到的结果是10进制数字

PHP的数据类型

结果:s1 = 4779,其类型为:integer

 

·        注意:十进制转为其他进制结果是字符串,其他进制转为十进制要求给定数据是字符串形式

思考:

$v1 = bindec(123);//理解过程:bindec(“123”) =>bindec(“1”)=>1

$v2 = bindec(0123);//理解:01238进制数字,其10进制值为:83,再当作二进制字符串就是“83”,结果就只能是0

$v3 = bindec(“0123”);//理解:因为直接就是字符串了,就当二进制字符串用,结果是1

$v4 = octdec(0123);      //理解:01238进制数字,其10进制值为:83,再当作8进制字符串就是“83”,但8进制中没有“8”这个数字,就只识别出一个“3”这个数字

以下代码测试:

PHP的数据类型

 

浮点类型float double real

有两种写法:

$v1 = 1.234;   //带小数点,,就是浮点类型

$v2 = 1.234E3;//含义是:1.234乘以103次方,即1234,带E的形式就是浮点数

$v3 = 1234E3//结果值是1234000,但也是一个浮点数。


关于浮点数的细节知识:

    十进制小数转二进制小数的做法:乘2并顺序取整数部分

PHP的数据类型

浮点数不应该直接进行大小比较。因为浮点数在系统内部(CPU级别),很可能都是不精确表达。要想进行比较,我们只能考虑自己应用中的精度要求的基础上,将其转换为整数进行比较。

通常的做法是:乘以10的精度位数数次方,比如精度要求3位有效数字,则乘以10的3次方。

PHP的数据类型


当整数运算的结果超出整数的范围后,会自动转换为浮点数。

整数的范围在32位操作系统下,大约正负20多亿。


字符串类型 String

   JS中虽然有2种字符串表达形式,但也应该理解为是一种字符串:

        var str1 = '单引号字符串';

        var str2 = "双引号字符串"; 

    但在php中,单引号与双引号字符串是有不同细节含义的字符串:

    

PHP中有4种字符串形式:


单引号字符串:

PHP的数据类型

双引号字符串:

PHP的数据类型

nowdoc(单引号)定界符字符串:

PHP的数据类型

heredoc(双引号)定界符字符串:

PHP的数据类型


布尔类型:bool , boolean

    用于标识某种只有两个状态值的数据:true , false

    在应用中,我们常常会(需要)直接将一个数据(可能是各种其它类型)当作一个布尔值来进行判断。

    那么此时其实发生的是:会将数据隐含转换为布尔值。

最常见的语法形式是:

    if(某数据/变量) {

        ...........

    }

那么,在php中,其它各种数据,隐含转换为布尔值的时候,会当作false的有:0 , 0.0 ,null , "", "" , "0" , array() , 及未定义的变量。其它数据当作true!



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI