详解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')

posted @ 2014-12-28 10:08  267268  阅读(2292)  评论(0编辑  收藏  举报