PHP数据类型的总结分析
PHP 分析 总结 数据类型
2023-06-13 09:15:01 时间
PHP共有8中数据类型:
类型名称
类型表示
取值
bool
布尔型
true,false
integer
整型
-2147483647-2147483648
string
字符串型
字符串长度取决于机器内存
float
浮点型
最大值1.8e308
object
对象
通过new实例化$obj=newperson();
array
数组类型
$arr=array(1,2,3,4,5,6);//一维数组
resourse
null
空值
null
布尔型bool:
对于其他类型我们可以使用(bool)或者(boolean)进行强制转换eg:(bool)1=true;
以下几种情况在强制转化的时候默认为false:
转换
结果
布尔型的falsevar_dump((bool)false)
bool(false)
整型0var_dump((bool)0);
bool(false)
浮点型0.0var_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型
我们可以使用echoPHP_INT_SZIE输出integer的字长,和机器有关。echoPHP_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包含的字符串会原样输出,里面包含的特殊字符和变量不会被解析
如果双引号中包含数组变量中的几种情况
//我们先定义以下数组
复制代码代码如下:
布尔型bool:
对于其他类型我们可以使用(bool)或者(boolean)进行强制转换eg:(bool)1=true;
以下几种情况在强制转化的时候默认为false:
字符串"0.0"转换结果为bool(true)
注:-1和其他非零值(不论正负)都是true
整型integer:
整型的范围-2147483647--2147483647,如果超过该值会自动转换成float型
我们可以使用echoPHP_INT_SZIE输出integer的字长,和机器有关。echoPHP_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常量则出错<spanstyle="font-family:"CourierNew";"></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($arras&$value)
{
$value=strtoupper($value);
echo$value;
}//输出结果ABCDE
Object对象类型
实例化对象我们使用new加入有一个person类,我们可以通过以下方式
[php]
$objPerson=newperson();
强制转换(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();
PHPtypecomparisontables
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 |
$xisundefined | 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 |
相关文章
- assertequals() php,assertEquals()
- 【说站】php中Swoole的模块介绍
- php pwn学习入门二 (格式化字符串漏洞)
- php-XML Expat 解析器
- PHP explode():字符串转数组
- [PHP] url的pathinfo模式加载不同控制器的实现详解编程语言
- PHP实现将数组插入MySQL数据库(php数组插入mysql)
- 交互PHP与MySQL联动:实现数据交互(php与mysql数据库)
- php 开启微信公众号开发者模式详解编程语言
- Linux下运行PHP脚本的简单步骤(linux运行php脚本)
- 数据库PHP编程实现从Oracle数据库读取数据(php读取oracle)
- Linux上的PHP扩展开发(php扩展linux)
- PHP的MySQL编程示例(php的mysql代码)
- 让PHP连接MSSQL数据库的正确方式(php如何连mssql)
- PHP封装MSSQL,提升高效开发力度(php mssql 封装)
- 解决MySQL与PHP配置问题的实战技巧(mysql php 配置)
- PHP字符转义相关函数小结(php下的转义字符串)
- php学习面向对象课件
- PHP数据库树的遍历方法
- PHP+ajax无刷新删除数据
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- PHP通过iconv将字符串从GBK转换为UTF8字符集
- php中json_encode中文编码问题分析
- php中将数组存到文件里的实现代码
- PHP常用特殊运算符号和函数总结(php新手入门必看)
- PHP静态调用非静态方法的应用分析