详解PHP中的八种数据类型
美元符号$是变量的标识符,所有变量都是以$符号开头的,无论是声明变量还是调用变量,都应使用$符号。
PHP一共支持8种原始类型:
1、boolean (布尔型):取值只有 true 或 false;true和false是PHP的内部关键字。
通常布尔型变量都是应用在条件或循环语句的表达式中。在PHP中,不是只有false值才为假,在一些特殊情况下boolean值也被认为是false。这些特殊情况为:0、0.0、"0"、空白字符串("")、只声明没有复制的数组等。
2、integer (整型):
整型数据类型只能包含整数。可以用十进制、八进制、十六进制来表示。八进制的数字前必须加0,十六进制需要加0x。
注意1:如果在八进制中出现了非法数字(8和9),则后面的数字会被忽略掉。
注意2:如果给定的数值超出了int型所能表示的最大范围(-2147483648~+2147483647),将会被当作float型处理,这种情况称为整数溢出。同样,如果表达式的最后运算结果超出了int型的范围,也会返回float型。
3、float / double (浮点型):
浮点数据类型可以用来存储数字,也可以保存小数。它提供的精度比整数大得多。在32位的操作系统中,有效的范围是
1.7E-308~1.7E+308。在PHP4.0以前的版本中,浮点型的标识为double,也可以叫做双精度浮点数,两者没有区别。
浮点型数据默认有两种书写格式,
一种是标准格式:3.1415 -35.8
一种是科学记数法格式:3.58E1 849.72E-3
浮点型的数值只是一个近似值,所以要尽量便面浮点数型数值之间比较大小,因为最后的结果往往是部准确的。
4、string (字符串):
字符串是连续的字符序列,由数字、字母和符号组成。字符串中的每个字符只占用一个字节。在PHP中,有3种定义字符串的方式,分别是单引号(')、双引号(")和界定符(<<<)。
单引号和双引号的不同之处在于,双引号中所包含的变量会自动被替换成实际数值,而单引号中包含的变量则按普通字符串输出。
单引号和双引号的另一处不同点:对转义字符的使用。使用单引号时,只要对单引号“'”进行转义即可。但使用双引号(")时,还要注意“"”、“$”等字符的使用。这些特殊字符都要通过转义符“\”来显示。
在定义简单的字符串时,使用单引号是一个更加合适的处理方式。如果使用双引号,PHP将花费一些时间来处理字符串的转义和变量的解析。
转义字符:
\n 换行
\r 回车
\t 水平制表符
\\ 反斜杠
\$ 美元符号
\' 单引号
\" 双引号
\[0-7]{1,3} 此正则表达式序列匹配一个用八进制符号表示的字符,如\467
\x[0-9A-Fa-f]{1,2} 此正则表达式序列匹配一个用十六进制符号表示的字符,如\x9f
界定符(<<<):在使用时后接一个标识符,然后是字符串,最后是同样的标识符结束字符串。例如:
<?php
$str='界定符示例'; //声明变量$str
echo <<str //界定符开始
界定符和双引号没有什么区别,\$str同样可以被输出来。<p> //输出字符串
\$str的内容为:$str //输出变量$str
str; //界定符结束
?>
结束标识符必须单独另起一行,并且不允许有空格。在标识符前后有其他符号或字符,也会发生错误。上面例子中的注释部分在实用中一定不要输入,否则会出现错误提示。
5、array (数组):
数组是一组数据的集合,它把一系列数据组织起来,形成一个可操作的整体。数组中可以包括很多数据,如标量数据、数组、对象、资源以及PHP中支持的其他语法结构等。
数组中的每个数据成为一个元素,元素包括索引(键名)和值两个部分。元素的索引可以由数字或字符串组成,元素的值可以是多钟数据类型。定义数组的语法格式:
$array=array('value1','value2',......);
$array[key]='value';
$array=array(key1=>value1,key2=>value2,......);
其中,参数key是数组元素的下标,value是数组下标所对应的元素。示例如下:
<?php
$arr1=array('This','is','an','example');
$arr2[0]='tempname';
$arr3=array(1=>'You',2=>'are','the'=>'the','str'=>'best');
echo $arr1[0].'<br>';
echo $arr2[0].'<br>';
echo $arr3['the'].'<br>';
?>
声明数组后,数组中的元素个数还可以自由更改。只要给数组赋值,数组就会自动增加长度。
6、object (对象):编程语言所应用到的方法有两种:面向过程和面向对象。
7、resource (资源):在使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗殆尽。
8、null (空值):
空值,表示没有为该变量设置任何值,空值(null)不区分大小写。
被赋予空值的情况有以下3种:
a、还没有赋任何值
b、被赋值null
c、被unset()函数处理过的变量
实例:
$string1=null;
$string3='str';
if(is_null($string1)){
echo 'string1 is null<br>';
}
if(is_null($string2)){
echo 'string2 is null<br>';
}
unset($string3);
if(is_null($string3)){
echo 'string3 is null<br>';
}
运行结果:
string1 is null
http://www.onesheng.cn Notice: Undefined variable: string2 in E:\PHPnow\htdocs\test2.php on line 36
string2 is null
http://www.onesheng.cn Notice: Undefined variable: string3 in E:\PHPnow\htdocs\test2.php on line 40
string3 is null
说明:is_null()函数是判断变量是否为null,该函数返回一个boolean型,如果变量为null,则返回true,否则返回false。unset()函数用来销毁指定的变量。从PHP4开始,unset()函数就不再有返回值,所以不要试图获取或输出unset()。
上面的错误是没有定义$string2, unset($string3)没有返回值,等同于后面没有定义$string3。
检测数据类型:
is_bool 检查变量是否是布尔类型 is_bool(true)、isbool(false)
is_string 检查变量是否是字符串类型 is_string('string')、is_string(1234)
is_float / is_double 检查变量是否为浮点类型 is_float(3.1415)、is_float('3.1415')
is_integer / is_int 检查变量是否为整数 is_integer(34)、is_integer('34')
is_null 检查变量是否为null is_null(null)
is_array 检查变量是否为数组类型 is_array($arr)
is_object 检查变量是否为一个对象类型 is_object($obj)
is_numeric 检查变量是否为数字或由数字组成的字符串 is_numeric('5')、is_numeric('abcd123')