PHP 7从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

3.5 数据类型

从PHP 4开始,PHP中的变量不需要事先声明,赋值即可声明。在使用这些数据类型前,读者需要了解它们的含义和特性。下面介绍整型、浮点型、布尔型、字符串型、数组型、对象型以及NULL和Resource两个比较特殊的类型。

3.5.1 什么是类型

不同的数据类型其实就是所存储数据的不同种类。PHP的不同数据类型主要包括:

● 整型(integer),用来存储整数。

● 浮点型(float),用来存储实数。

● 字符串型(string),用来存储字符串。

● 布尔型(boolean),用来存储真(true)或假(false)。

● 数组型(array),用来存储一组数据。

● 对象型(object),用来存储一个类的实例。

作为弱类型语言,PHP也被称为动态类型语言。在强类型语言,例如C语言中,一个变量只能存储一种类型的数据,并且这个变量在使用前必须声明变量类型。而在PHP中,给变量赋什么类型的值,这个变量就是什么类型,例如以下几个变量:

    $hello = "hello world";

由于hello world是字符串,因此变量$hello的数据类型就是字符串类型。

    $hello = 100;

同样,由于100为整型,因此$hello也就是整型。

    $wholeprice = 100.0;

由于100.0为浮点型,因此$wholeprice就是浮点型。

由此可见,对于变量而言,如果没有定义变量的类型,则它的类型由所赋值的类型决定。

3.5.2 整型

整型(integer)是数据类型中最为基本的类型。在现有的32位运算器的情况下,整型的取值是从-2147483648到+2147483647。整型可以表示为十进制、十六进制和八进制。

例如:

    3560     //十进制整数
    01223    //八进制整数
    0x1223   //十六进制整数

3.5.3 浮点型

浮点型(floating-point)就是表示实数。在大多数运行平台下,这个数据类型的大小为8个字节。它的近似取值范围是2.2E-308~1.8E+308(科学计数法)。

例如:

    -1.432
    1E+07
    0.0

3.5.4 布尔型

布尔型(boolean)只有两个值,就是true和false。布尔型是十分有用的数据类型,通过它,程序实现了逻辑判断的功能。

其他的数据类型基本都有布尔属性:

● 整型,为0时,其布尔属性为false,为非零值时,其布尔属性为true。

● 浮点型,为0.0时,其布尔属性为false,为非零值时,其布尔属性为true。

● 字符串型,为空字符串“”或者零字符串“0”时,其布尔属性为false,包含除此以外的字符串时其布尔属性为true。

● 数组型,若不含任何元素,其布尔属性为false,只要包含元素,则其布尔属性为true。

● 对象型,资源型,其布尔属性永远为true。

● NULL型,其布尔属性永远为false。

3.5.5 字符串型

字符串型(string)的数据是表示在引号之间的。引号分为双引号(" ")和单引号(' ')。这两种引号可以表示字符串,但是这两种表示方法也有一定区别。

双引号几乎可以包含所有的字符,但是在其中的变量显示变量的值,而不是变量的变量名,而有些特殊字符加上“\”符号就可以了;单引号内的字符是被直接表示出来的。

下面通过一个案例来讲述整型、浮点型、布尔型和字符串型数据的使用方法和技巧。

【例3.10】(实例文件:ch03\3.10.php)

    <? php
      $int1= 2012;     // 十进制整数
      $int2= 01223;    //八进制整数
      $int3=0x1223;   //十六进制整数
      echo "输出整数类型的值:";
      echo $int1;
      echo "\t";   //输出一个制表符
      echo $int2;   //输出659
      echo "\t";
      echo $int3;   //输出4643
      echo "<br />";
      $float1=54.66;
      echo $float1;   //输出54.66
      echo "<br />";
      echo "输出布尔型变量:";
      echo (Boolean)( $int1);    //将int1整型转化为布尔变量
      echo "<br />";
      $string1="字符串类型的变量";
      echo $string1;
    ?>

本程序运行结果如图3-10所示。

图3-10 程序运行结果

3.5.6 数组型

数组(array)是PHP变量的集合,是按照“键值”与“值”的对应关系组织数据的。数组的键值既可以是整数,也可以是字符串。另外,数组不特意表明键值的默认情况下,数组元素的键值为从零开始的整数。

在PHP中,使用list()函数或array()函数来创建数组,也可以直接进行赋值。

下面使用array()函数创建数组。

【例3.11】(实例文件:ch03\3.11.php)

    <? php
    $arr=array                         // 定义数组并赋值
    (
        0=>15,
        2=>1E+05,
        1=>"开始学习PHP基本语法了",
    );
    for ($i=0; $i<count($arr); $i++)   // 使用for循环输出数组内容
    {
      $arr1=each($arr);
      echo "$arr1[value]<br />";
    }
    ?>

本程序运行结果如图3-11所示。

图3-11 程序运行结果

【案例分析】

(1)程序中用“=>”为数组赋值,数组的下标只是存储的标识,没有任何意义,数组元素的排列以加入的先后顺序为准。

(2)本程序采用for循环语句输出整个数组,其中count函数返回数组的个数,echo函数返回当前数组指针的索引值对,后面的章节将详细讲述echo函数的使用方法。

上面实例的语句可以简化如下。

【例3.12】(实例文件:ch03\3.12.php)

    <? php
      $arr=array(15,1E+05, "开始学习PHP基本语法了");   // 定义数组并赋值
      for ($i=0; $i<3; $i++)
          {
          echo $arr[$i]<br />";
          }
    ?>

本程序运行结果如图3-12所示。从结果可以看出,这两种写法的运行结果相同。

图3-12 程序运行结果

另外,读者还可以对数组的元素一个一个地赋值,下面举例说明。上面的语句可以简化如下。

【例3.13】(实例文件:ch03\3.13.php)

    <? php
      $arr[0]=15;  // 对数组元素分别赋值
      $arr[2]= 1E+05;
      $arr[1]= "开始学习PHP基本语法了";
    for ($i=0; $i<count($arr); $i++)
    {
      $arr1=each($arr);
      echo "$arr1[value]<br />";
    }
  ?>

本程序运行结果如图3-13所示。从结果可以看出,一个一个赋值的方法和上面两种写法的运行结果一样。

图3-13 程序运行结果

3.5.7 对象型

对象(object)就是类的实例。当一个类被实例化以后,这个被生成的对象被传递给一个变量,这个变量就是对象型变量。对象型变量也属于资源型变量。

3.5.8 NULL型

NULL类型是仅拥有NULL这个值的类型。这个类型用来标记一个变量为空。一个空字符串与NULL是不同的。在数据库存储时会把空字符串和NULL区分开处理。NULL型在布尔判断时永远为false。很多情况下,在声明一个变量的时候可以直接先赋值为NULL型,如$value = NULL。

3.5.9 资源类型

资源(resource)类型是十分特殊的数据类型。它表示PHP的扩展资源,可以是一个打开的文件,也可以是一个数据库连接,甚至可以是其他的数据类型。但是在编程过程中,资源类型却是几乎永远接触不到的。

3.5.10 数据类型之间的相互转换

数据从一种类型转换到另外一种类型,就是数据类型转换。在PHP语言中,有两种常见的转换方式:自动数据类型转换和强制数据类型转换。

1.自动数据类型转换

这种转换方法最为常用,直接输入数据的转换类型即可。例如,float型转换为整数int型,小数点后面的数将被舍弃。如果float数值超过了整数的取值范围,则结果可能是0或者整数的最小负数。

【例3.14】(实例文件:ch03\3.14.php)

    <? php
      $flo1=1.86;            // 定义float类型
      echo (int)$flo1."<br />";   // 转换为整数类型输出
      $flo2=4E32;         // 超过整数取值范围
      echo(int)$flo2;
    ?>

本程序运行结果如图3-14所示。

图3-14 程序运行结果

2.强制数据类型转换

在PHP中,可以使用settype函数强制转换数据类型,基本语法如下。

    Bool settype(var, string type)

注意:type的可能值不能包含资源类型数据。

【例3.15】(实例文件:ch03\3.15.php)

    <? php
          $flo1=1.86;  // 定义浮点型数据
          echo settype($flo1, "int");  // 强制转换数据为整数并输出
    ?>

本程序运行结果如图3-15所示。

图3-15 程序运行结果