PHP数据类型的总结分析


Posted in PHP onJune 13, 2013

PHP共有8中数据类型:

类型名称 类型表示 取值
bool 布尔型 true,false
integer 整型 -2147483647-2147483648
string 字符串型 字符串长度取决于机器内存
float 浮点型 最大值1.8e308
object 对象 通过new实例化 $obj=new person();
array 数组类型 $arr=array(1,2,3,4,5,6);//一维数组
resourse
null 空值 null

布尔型bool :
对于其他类型我们可以使用(bool)或者(boolean) 进行强制转换 eg:(bool)1=true;
以下几种情况在强制转化的时候默认为false:
转换 结果
布尔型的false var_dump((bool) false) bool(false)
整型0 var_dump((bool) 0); bool(false)
浮点型0.0 var_dump((bool) 0.0); bool(false)
字符串‘0' var_dump((bool) '0'); bool(false)
空数组$arr=array(); var_dump((bool) $arr) bool(false)
不包含任何成员变量的空对象只在PHP4使用,PHP5中为true bool(false)
NULL或者尚未赋值的变量var_dump((bool) NULL) bool(false)
从没有任何标记(tags)的XML文档生成的SimpleXML 对象 bool(false)

字符串'0.0'转换结果为bool(true)
注:-1和其他非零值(不论正负)都是true

整型integer:
整型的范围-2147483647--2147483647 ,如果超过该值会自动转换成float型
我们可以使用echo PHP_INT_SZIE 输出integer的字长,和机器有关。echo PHP_INT_MAX 输出integer的最大值
PHP中没有整除运算 如果执行 1/2 会产生 float的0.5 如果想实现整除效果,则可以使用 (int)(1/2)=0 或者使用round(25/7)=4
强制转化成整型 (int)或者(integer) bool型 ture 转换成 1 ,false转换成0

浮点型float:
取值范围 最大值 :1.8e308 不知道最小值是多少? 求高手告知
浮点数的字长也和机器有关, 好像没有PHP_FLOAT_SIZE 啊,求高手告知如何的到浮点数字长

字符串类型string:
定义字符串的4种方法:
1.单引号
2.双引号
3.heredoc语法结构
4.nowdoc 语法结构(PHP5.3.0之后)
单引号
单引号定义了最原始的字符串,里面的所有内容都按字符串处理,如果字符串中包含单引号则可以用\转义
双引号
双引号定义的字符串会解析一些特殊字符(\n,\b)和变量
可以将变量放置在双引号中的方式来代替将变量转换成 字符串(string):
$num=10;
$str = "$num"; //$str为字符串型的10
heredoc语法结构
<<<标示符
字符串本身
标示符
结束时的标示符必须在一行的开始位置,而且标示符的定义格式也必须按照PHP定义的规则,只能包含数字,字母,下划线,并且不能以数字下划线开头
结束标示符哪一行不允许有其他字符,可以在标示符后面添加一个分号,切分号前后也不能有tab或空格,否则PHP将无法解析该标示符,会继续向下查找标示符,如果在文件结尾前仍没有找到则会产生一个错误
heredoc就是一个没有使用双引号的双引号,就是里面可以包含双引号,且不用转义,而且可以解析特殊字符和变量
nowdoc 语法结构
<<<'标示符'
字符串本身
nowdoc的开始标示符必须使用单引号括起来,结束标示符和其他规则都和heredoc一样
nowdoc就是没有使用单引号的单引号,nowdoc包含的字符串会原样输出,里面包含的特殊字符和变量不会被解析

如果双引号中包含数组变量中的几种情况
//我们先定义以下数组

[php]
$arr=array( 
'one'=>array( 
'name'=>'jiangtong', 
'sex'=>'男' 
), 
'two'=>'zhaohaitao', 
'three'=>'fanchangfa' 
);

上面是的数组中第一个元素二维的,后两个是一维的,我们访问一维的时候下面几种方式:
[php]
echo "$arr[two]"//key没有单引号 
echo "$arr['two']"//key有单引号 会出错,如果我们改成 echo "{$arr['two']}"; 则可以正确输出结果 
echo "{$arr[two]}"//有双大括号,但是key没有单引号 这种情况PHP会先寻找有没有常量banana,有的话则将其

替换,由于没有two常量则出错<span style="font-family: 'Courier New'; "> </span>
可见在访问一维数组的时候 要么不加key不加引号(考虑到第三种情况啊),加了就要被{}括起来,可以全不加。
多维数组测试
[php]
echo "$arr[one][name]"; //输出结果为Array[name] 可见它返回了一个数组,只解析了一维 
echo"{$arr['one']['name']}";//输出结果为jiangtong

在多维数组的访问中必须使用了大括号key必须使用双引号括起来

数组类型
在字符串类型中已经提到,被大括号括起来的,如果不加key引号,是合法的,那么PHP首先会查找是否有名为key的常量,有的话就会被替换,没有的话会产生一个找不到常量的警告才按普通字符串处理,所以建议大家一定加单引号
转换成数组使用(array)type 或者array(type) ,但是如果将只有一个值的转换成数组,会得到一个元素的数组,且下标为0,将NULL转换成数组会得到空的数组
我们可以在遍历数组的时候改变数组的值,在PHP5.0以上可以使用引用实现

[php]
$arr=array('a','b','c','d','e' ); 
foreach($arr as &$value) 
{ 
$value=strtoupper($value); 
echo $value; 
}//输出结果 ABCDE

Object对象类型
实例化对象我们使用new 加入有一个person类,我们可以通过以下方式
[php]
$objPerson=new person();

强制转换 (object): 如果将一个对象转化成对象那么它没有任何改变,对于其他任何值将会实例化一个stdclass的对象,如果该值为NULL,则会实例化一个空对象,如果 将数组转换成对象那么会将数组的key作为对象的属性,value为属性值,其他类型的值则名为scalar的成员变量包含该值
[php]
$arr=array('one'=>'a','two'=>'b' ); 
$obj=(object)$arr; 
echo $obj->one //输出结果为a;

注:这是由key的数组如果没有字符key的数组,我不知道如何访问,谁知道希望告诉小弟一下,谢谢。
对于其他值
[php]
$obj1=(object)'jiang'; 
echo $obj1->scalar;//输出结果jiang

NULL 空类型
null大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,下面三种情况变量被认为为NULL
1.被赋值为NULL
2.尚未被赋值
3.被unset();

PHP type comparison tables

Comparisons of $x with PHP functions
Expression gettype() empty() is_null() isset() boolean :if($x)
$x = ""; string TRUE FALSE TRUE FALSE
$x = null NULL TRUE TRUE FALSE FALSE
var $x; NULL TRUE TRUE FALSE FALSE
$x is undefined NULL TRUE TRUE FALSE FALSE
$x = array(); array TRUE FALSE TRUE FALSE
$x = false; boolean TRUE FALSE TRUE FALSE
$x = true; boolean FALSE FALSE TRUE TRUE
$x = 1; integer FALSE FALSE TRUE TRUE
$x = 42; integer FALSE FALSE TRUE TRUE
$x = 0; integer TRUE FALSE TRUE FALSE
$x = -1; integer FALSE FALSE TRUE TRUE
$x = "1"; string FALSE FALSE TRUE TRUE
$x = "0"; string TRUE FALSE TRUE FALSE
$x = "-1"; string FALSE FALSE TRUE TRUE
$x = "php"; string FALSE FALSE TRUE TRUE
$x = "true"; string FALSE FALSE TRUE TRUE
$x = "false"; string FALSE FALSE TRUE TRUE
Loose comparisons with ==
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE
1 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE
-1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
"1" TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
"0" FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
"-1" TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
array() FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
"php" TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE

Strict comparisons with ===
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1 FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
-1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
"1" FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
"0" FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
"-1" FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
array() FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
"php" FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
"" FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
PHP 相关文章推荐
Classes and Objects in PHP5-面向对象编程 [1]
Oct 09 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
Yii rules常用规则示例
Mar 15 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
php 流程控制switch的简单实例
Jun 07 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
如何用C语言编写PHP扩展的详解
Jun 13 #PHP
探讨:如何编写PHP扩展
Jun 13 #PHP
PHP APC的安装与使用详解
Jun 13 #PHP
eAccelerator的安装与使用详解
Jun 13 #PHP
探讨Hessian在PHP中的使用分析
Jun 13 #PHP
深入PHP变量存储的详解
Jun 13 #PHP
深入PHP中的HashTable结构详解
Jun 13 #PHP
You might like
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
咖啡的化学
2021/03/03 咖啡文化
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
解析php中memcache的应用
2013/06/18 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
JavaScript 数组循环引起的思考
2010/01/01 Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python每天必学之bytes字节
2016/01/28 Python
Python性能提升之延迟初始化
2016/12/04 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
英国二手物品交易网站:Preloved
2017/10/06 全球购物
车辆维修工自我评价怎么写
2013/09/20 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS