数据类型
PHP提供8种类型的值或数据类型。
4种是标量(单个值)类型:整型、浮点型、字符串和布尔型。
两种(复合)类型:数组和对象。
剩下两种特殊类型:资源(resource)和NULL。
整型
整型是整数数字。
比如1、12和256。
可接受值的范围随具体的平台而变化,但通常的范围是从-2 147 483 648到+2 147 483 657。
这个范围与C编译器的长数据类型是相同的。
不幸的是,C语言的标准没有指定长数据类型一定在什么范围,所以在一些系统上可能看到不同的整型范围。
整型直接量可以写成十进制、八进制或十六进制。
十进制值由数字序列表示,不能以零开头。
序列可以以正号(+)或负号(-)开始。
如果没有符号就假设为正的。
十进制整数的例子有:
1998
-641
+33
八进制数由一个前导0和一个0~7的数字序列组成。
同十进制一样,八进制数将正号或负号作为前缀。
下面是一些八进制的例子和与之对应的十进制值:
0755 十进制为493
十六进制以0x开始,后面跟数字(0~9)或字母(A~F)序列。
字母可以大写或小写,但通常是大写。
同十进制和八进制值一样,十六进制数也可以包含符号:
0xFF 十进制为255
-0xDADL 十进制为-56017
如果试图将一个太大的整数存放在一个变量中,该整数就会自动转成一个浮点数。
用函数 is_int()[或它的别名is_integer()]来测试一个值是否是整数:
if[is_int($x)]{
//$x 是一个整数
}
浮点型
浮点型(常指实数)是用十进制数字表示数字值。
像整数一样,它的范围限制取决与具体的集体。
PHP浮点数与C编译器的双精度数据类型范围相同。
通常,允许的数值在1.7E-308和1.7E+308之间,精确到15位数字。
如果整数值需要更高的精确度或更广的范围,则可以使用BC或GMP扩展。
PHP认可用两种不同格式书写的浮点数,下面一种是我们每天都用到的:
3.14
0.017
-7.1
PHP也认可可用科学计数法表示的数:
0.314E1 // 3.14
17.0E-3 // 0.017
浮点值仅仅是数的近似表示。
例如,在许多系统中,3.5实际上表示3.4999999999。
这意味着写代码是尽量不要假定浮点数完全表示实际值,如果直接用==比较两个浮点数的值。
一般的方法是比较到几位小数:
if (int($a * 1000)) == int($b * 1000){
//3位小数相等的数字
}
用函数is_float(或它的别名is_real())来测试一个值是否是浮点数:
if (is_float($x)){
//$x 是一个浮点数
}
字符串
以为字符串在WEB应用中是如此普遍,所以PHP为字符串的创建和处理提供了核心级的支持。
字符串是任意长度的字符序列。
字符串直接量不是用单引号就是用双引号来界定:
‘big dog’
“fat dog”
变量用双引号括起来,而单引号中的则不是变量:
$name = “Guido”;
echo “Hi, $name\n”;
echo ‘Hi, $name’;
显示
Hi, Guido
Hi, $name
双引号也支持多种字符转义,如表2—2所示。
单引号中的字符串仅仅认可用\\得到一个反斜杠直接量,用\’来得到一个单引号直接量:
$dos_path = ‘C:\\WINDOWS\\SYSTEM’;
$PUBLISHER = ‘Tim O\’Reilly’;
echo “$dos_path $publisher\n”;
将显示
C:\WINDOWS\SYSTEM Tim O’Reilly
要测试两个字符串是否相等,用==比较操作符:
if ($a == $b) { echo “a and b are equal”}
用函数is_string()来册市一个值是否为字符串:
if (is_string($x)){
//$x 是一个字符串
}
PHP提工操作符和函数来比较、分解,装配(assemble)、查找、替换和休整(trim)字符串,许多专用的字符串函数用于HTTP、HTML和SQL编码。