文章教程

2.2数据类型

9/17/2020 9:31:19 PM 人评论 次浏览

2.2 数据类型

PHP属于弱类型语言。这就是说,变量的数据类型一般不用开发人员指定,PHP会在程序执行过程中,根据程序上下文环境决定变量的数据类型。如一串数字“789”,在用echo语句输出时,它作为字符串处理;但是做数学运算时,它就作为整数处理。PHP的变量主要有:整数类型、浮点类型、字符串类型、布尔类型、数组类型及对象类型。

下面将介绍除对象类型之外的数据类型,对象类型将作为单独的章详细阐述。

2.2.1 整数类型:integer

可以在PHP中指定的整数包括十进制、八进制和十六进制,整型数值前可以加上符号“+”或“-”。指定方式如下。


     $i = 2468;   //
指定一个十进制整数
     $i = -1357;  //
指定一个负数
     $i = 0123;   //
指定一个八进制数
     $i = 0x456;  //
指定一个十六制数

对于八进制数,需要在数字前面加上数字0,对于十六进制数,需要在数字前面加上0x。

2.2.2 浮点类型:float

PHP中浮点数的表示形式有两种,为十进制形式和指数形式。浮点数由数字和小数点组成,如0.1234、1.234等。如下是一个指定浮点型变量的示例代码。


$f = 12.34;    //
指定变量$f
的值为12.34

也可以用如下形式指定指数形式的浮点数。


$f = 1.2e3;    //
表示将1.2
乘以10
的3
次方指定给变量$f

2.2.3 字符串类型:string

一串字符组成一个字符串,如abcdef就是一个字符串。在PHP中常用双引号(“”)或单引号('')指定一个字符串。如下示例代码使用双引号指定一个字符串“PHP string”。


$s = "PHP string";

使用双引号指定的字符串,如果字符串中含有变量,那么这个变量将会被其实际内容(即变量的值)替换,例如如下代码。


     $v = "string";
     $s = "PHP$v";

其中,由双引号指定的字符串“PHP$v”中含有变量$v,因此$s的最终结果是:PHPstring。如果希望输出的是$v本身而不是其变量的值,就需要对特殊符号“$”做转义处理。在特殊符号“$”前加上反斜杠“\”就可以输出符号“$”本身。例如如下代码。


     $v = "string";
     $s = "PHP\$v";

变量$s的最终结果将会是:PHP$v。使用反斜杠(\)指定特殊的字符,这叫做字符转义。例如在双引号指定的字符串中,要使用双引号“””,就应该这样写“\”,这样就在字符串中添加了一个双引号。表2-1列举了PHP中主要特殊字符的转义字符及其含义。

表2-1 转义字符及其说明

在PHP中也可以使用单引号指定字符串。与双引号不同的是,单引号指定的字符串,不会对其中的变量用变量的值做替换,也不会对除“\”和“””之外的字符做转义。代码2-2演示了使用单引号、双引号指定字符串的区别,以及如何进行字符转义,从而输出特殊字符。

代码2-2 PHP中的字符串和字符转义2-2.php


     01 <?php
     02 $s = "new string";
     03 
     04 //
下面双引号字符串中的符号"$"
未做转义,因此$s
将被替换成其变量的值
     05 $str_1 = "
双引号指定的字符串,$s";
     06 
     07 //
下面双引号字符串中的符号"$"
做了转义,因此$s
原封不动,不会被替换为变量$s
的值
     08 $str_2 = "
双引号指定的字符串,\$s";
     09 
     10 //
单引号字符串中的"$"
不用做转义即可原样输出
     11 $str_3 = '
单引号指定的字符串,$s';
     12 
     13 $str_4 = '
单引号指定的字符串,\$s';
     14 
     15 //
在双引号字符串中,输出$
、"
、等特殊字符,需要做转义
     16 $str_5 = "
在双引号字符串中,输出特殊字符:\$ \" \\ '";
     17 
     18 //
在单引号字符串中,输出'
,需要做转义
     19 $str_6 = '
在单引号字符串中,输出特殊字符:$ " \ \'';
     20 
     21 echo $str_1;
     22 echo "<br/>";
     23 echo "<br/>";
     24 
     25 echo $str_2;
     26 echo "<br/>";
     27 echo "<br/>";
     28 
     29 echo $str_3;
     30 echo "<br/>";
     31 echo "<br/>";
     32 
     33 echo $str_4;
     34 echo "<br/>";
     35 echo "<br/>";
     36 
     37 echo $str_5;
     38 echo "<br/>";
     39 echo "<br/>";
     40 
     41 echo $str_6;
     42 ?>

【代码解析】看过前面的说明后,很多读者会以为,只要是前面带转义符号\,就会原样输出字符串内容。但第11行和第13行都原样输出了$s,即单引号状态下定义的字符串,不管用不用转义符,输出都一样。上述程序的执行结果如图2-2所示。

这里简单提及一下,在PHP中通常使用英文句点(.)来连接两个字符串,例如代码2-3所示。

代码2-3 PHP字符串的连接2-3.php


     01 <?php
     02 $s1 = "PHP in ";
     03 $s2 = "Windows";
     04 $s = $s1.$s2;
     05 
     06 echo '$s1='.$s1;
     07 echo "<br/>";
     08 echo "<br/>";
     09 
     10 echo '$s2='.$s2;
     11 echo "<br/>";
     12 echo "<br/>";
     13 
     14 echo '$s='.$s;
     15 echo "<br/>";
     16 echo "<br/>";
     17 ?>

【代码解析】上述程序中,变量$s由$s1和$s2连接而成,执行结果如图2-3所示。

图2-2 PHP字符串的用法及字符转义

图2-3 PHP字符串的连接

2.2.4 布尔类型:boolean

布尔类型是最简单的数据类型,它只有两个取值,为TRUE(或1)和FALSE(或0)。这两个值都不区分大小写。TRUE(或1)表示“真”(真值),FALSE(或0)表示“假”(伪值)。

例如定义两个布尔型变量,代码如下。


     $flag    =  true;                //
为变量设置值为TRUE;
     $run     =  FALSE;               //
为变量设置值为FALSE;

2.2.5 数组类型:array

前文讲述的变量都是标量变量,标量变量的含义是一个被命名的存储一个数值的空间,而数组是一个被命名的存放一组数值的空间。这里的数值可以是整数、浮点数、字符串,甚至可以是数组、对象等。如下代码指定了一个数组。


$arr = array('spring','summer','fall','winter');

在PHP中使用array()语言结构建立一个数组。如上代码定义了名为$arr的数组,它包含4个值:spring、summer、fall和winter。数组中的值叫做“元素”,每个元素和一个“索引”(或称“键”、“下标”)相关联,通过“索引”可以访问数组元素。例如要输出上例数组$arr中的元素spring,可以使用如下代码。


echo $arr[0];

输出$arr[0]就会显示字符串spring。PHP数组的索引一般从0开始计数,要访问$arr的元素fall,就要使用$arr[2]。PHP数组除支持数字索引外,还支持字符串索引,即关联数组,这种数组通过字符串索引和元素关联,示例如代码2-4所示。

代码2-4 关联数组2-4.php


     01 <?php
     02 $sys = array(
     03 "server"=>"Apache",
     04 "os"=>"Windows",
     05 "db"=>"MySQL",
     06 );                      //
定义一个数组$sys
     07 
     08 echo $sys["server"];    //
通过字符串索引输出$sys["server"]
的值
     09 echo "<br/>";
     10 echo "<br/>";
     11 echo $sys["db"];
     12 ?>

图2-4 访问关联数组

【代码解析】代码第02~06行定义了一个关联数组$sys,第08行通过$sys["server"]可以取得数组元素“Apache”。程序执行结果如图2-4所示。

教程类别