本文是复习所写,并不会涵盖一些基础知识点
PHP中总共是4中标量类型、4种复合类型、2种特殊类型
标量类型
- bool
- int
GMP, GNU Multiple Precision, 用于处理任意长度整数
BC Math, 任意精度数学, 提供了加、减、乘、除、余等操作函数 - float
<?php
$a=1.23;
$b=1.2e3;
$c=7E-10;
$d=1_324.33; // 从PHP7.4.0开始支持
- 浮点运算可能会产生
NAN
, 不代表任何值,所以不能跟任何值比较,包括自身。基于此PHP专门提供了is_nan()
函数来检查是否是NAN
浮点数比较得话有两种方式:
<?php
// 第一种,使用BC Math函数 推荐
$a=231.222;
$b=231.22222;
bccomp($a, $b);
// 第二种,与机器极小值比较
$epsilon=0.0001;
if (abs($a-$b) <$epsilon) {
echo'两数相等';
}
- string
<?php
/*
* 单引号
* 最纯净的string,不会解析变量与特殊字符
* ' \ 在单引号string中有特殊作用,要想输出这两个字符需要在前面用 \ 转义一下
*/
$a='字符串';
$b='字\'符串';
$c='字符\\串';
/*
* 双引号
* 最重要的就是会解析变量
*/
$d="这是双引号{$a}";
/*
* Heredoc结构
* 以<<<加标识符换行开始,换行以标识符结束.开头标识符双单引号可省略
* 规则跟双引号字符串一致
*/
$g='c';
$e=<<<"Eof"
这是Heredoc{$a}
这是Heredoc${$g}
Eof;
/*
* Nowdoc结构
* 以<<<加标识符换行开始,换行以标识符结束.开头标识符必需使用单引号
* 规则跟单引号字符串一致
*/
$f=<<<'Eof'
这是Nowdoc字符串
Eof;
- PHP并没有明确指明string的编码,因此string会被按照源码文件的编码来编码, 推荐使用
UTF8-BOM
编码
对于多字节字符串需要使用多字节字符串函数来处理,即mb_
开头的函数
字符串可以通过下标来操作
复合类型
- array
PHP中的array实际上是一个有序映射. 它可以被视为数组、列表(向量)、哈希表、字典、集合、堆栈、队列等array_merge($arr1, $arr2)
同名字符串key arr2将会覆盖arr1;$arr1+$arr2
同名字符串key arr1覆盖arr2
纯数字key数组合并会重建索引,字符串数字混合key则不会 - object
- callable
- iterable PHP7.1 新增
指的是array或实现了Traversable
接口的对象, 标识是可以使用foreach迭代
使用array、实现Traversable接口、生成器都可创建可迭代对象
特殊类型
- resource
- null
PHP是动态类型语言,所以变量类型是在运行时根据上下文决定的。当然也可以通过显示/隐式的方式转换数据类型