博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php数据类型(一)
阅读量:6283 次
发布时间:2019-06-22

本文共 2590 字,大约阅读时间需要 8 分钟。

hot3.png

一、简介

php包括8中基本类型,其中4种标量类型boolean(布尔型),integer(整型),float(浮点型),string(字符串),2种复合类型array(数组),object(对象),还有两种特殊类型resource(资源),null。如果要查看一个变量的值和类型可以用var_dump();来输出,如果仅仅想看类型,可以用gettype()函数,另外要判断是不是某个类型可以用is_type()函数(比如is_null($a))。

二、布尔类型

布尔型说白了就是真的还是假的,它只有两种值,要么真要么假。定义也很简单,只要只要把ture或者false赋值给变量即可。给布尔型变量赋值不区分大小写,$a=true;$a=TRUE,是等效的。

当转换为 boolean 时,以下值被认为是 FALSE

  • 布尔值 FALSE 自身
  • 整型值 0 (零)
  • 浮点型值 0.0 (零)
  • 空 字符串, 以及 字符串 “0″
  • 不包括任何元素的数组
  • 不包括任何成员变量的对象
  • 特殊类型 NULL (包括尚未赋值的变量)
  • 从没有任何标记(tags)的XML文档生成的SimpleXML 对象

除以上以外任何值都是TRUE。

布尔型不需要手工转换,一般在程序中需要用到布尔型的时候程序会自动转换

在用布尔型作为流程控制的时候一定要注意if($a=1) ,if($a==1)以及if($a===1)的区别,=是赋值语句不属于以上情况,所以永远是真,==和===都是比较运算符,前者不检查类型,后者检查类型,即类型和值都相同才会相等。还有要注意的是字符串’0.0′转换后也是true。

三、整型

整型说来了就是整数,包括正整数和负整数,一般的范围是-231~231-1。

整型值可以使用十进制,十六进制或八进制表示,前面可以加上可选的符号(- 或者 +)。

八进制表示数字前必须加上 0(零),十六进制表示数字前必须加上 0x。下面的代码都是真确的定义(以后介绍进制之间的转换):

1 $a = 1234; // 十进制数
2 $a = -123; // 负数
3 $a = 0123; // 八进制数 (等于十进制 83)
4 $a = 0x1A; // 十六进制数 (等于十进制 26)

注意:如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略。

注意:如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了integer 范围,也会返回 float。

要将其他类型转换成整形可以通过(int) 或 (integer) 强制转换,也可以通过函数intval()来实现。

从布尔类型转换:FALSE 将产生出 0(零),TRUE 将产生出 1(壹)。

从浮点数转换:将舍去小数。如果浮点数超出了整数范围(通常为 +/- 2.15e+9 = 2^31),则结果不确定,

从字符串转换:如果字符串 没有包含 ‘.’,’e'或’E’ 并且数字值符合整数类型的限定, 这个 字符串 可被认定是一个 整型, 在其它情况下被认定为一个float。如果 字符串 以合法的数字开始,这个数字可直接使用。 否则,值就是 0 (零)。 合法数值由符号,后面跟着一个或多个数字(可能有个小数点),再跟着可选的指数符号如’e’ 或 ‘E’,后面跟着一个或多个数字。

运行下面的代码看看效果吧

01 <?php
02 $large_number =  2;
03 var_dump($large_number);
04 // 输出为:int(2)
05  
06 $large_number =  2147483648;
07 var_dump($large_number);
08 输出为:float(2147483648)
09  
10 var_dump((int)false); //0
11 var_dump((int)true);  //1
12 var_dump((int)2.01); //2
13 var_dump((int)2.01+(int)3.99); //5
14 var_dump((int)3.99);//3
15 var_dump((int)(2000000000*2+200000003)); //随数字变化
16  
17 var_dump('1.23' > '01.23'); // bool(false) 等价于1>1
18 var_dump('1.22.00' > '01.23.00'); // bool(true) 等价于1>0
19 var_dump('1-22-00' > '01-23-00'); // bool(true) 等价于1>0
20 var_dump((float)'1.22.00' > (float)'01.23.00'); // bool(false)等价于1.22>1.23
21  
22 ?>

四、浮点型

浮点型通俗点讲就是小数。浮点数的字长和平台相关,通常最大值是 1.8e308 并具有 14 位十进制数字的精度。一下定义都是真确的:

1 $a = 1.234;
2 $b = 1.2e3;
3 $c = 7E-10;

注意:简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,var_dump((int)((0.1+0.7)*10));通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9

这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了0.3。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等

字符串转换成浮点数和字符串转换成整数规则相同;对于其它类型的值,其情况类似于先将值转换成整型,然后再转换成浮点。赶紧去试试下面这段神奇的代码吧。

1 <?php
2 $a = 0.1;
3 $b = 0.7;
4 var_dump((int)(($a+$b)*10));//结果是7不是8
5  
6 ?>

 

本文固定链接: 

转载于:https://my.oschina.net/u/874560/blog/98077

你可能感兴趣的文章
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>
!!a标签和button按钮只允许点击一次,防止重复提交
查看>>
(轉貼) Eclipse + CDT + MinGW 安裝方法 (C/C++) (gcc) (g++) (OS) (Windows)
查看>>