文章教程

4.5变量的类型

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

4.5 变量的类型

从PHP4开始,PHP中的变量不需要事先声明,赋值即声明。声明和使用这些数据类型前,读者需要了解它们的含义和特性。下面介绍整型、浮点型、布尔值和两个较特殊的类型。

数据类型其实就是所存储数据的种类。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就是浮点型。

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

4.5.1 整型

整型是数据类型中最为基本的类型。在32位运算器中,整型的取值是从-2147483648到+2147483647之间。整型可以表示为十进制、十六进制和八进制。

例如:

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

4.5.2 浮点型

浮点型表示实数。在大多数运行平台下,这个数据类型的大小为8个字节。它的近似取值范围是2.2E-308到1.8E+308。

例如:

  -1.432
  1E+07
  0.0

4.5.3 布尔值

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

而对于其他的数据类型,基本都有布尔属性。

(1)整型,为0时,其布尔属性为false;为非零值时,其布尔属性为true。

(2)浮点型,为0.0时,其布尔属性为false;为非零值时,其布尔属性为true。

(3)字符串型,为空字符串“”或者零字符串“0”时,为false;为除此以外的字符串时为true。

(4)数组型,若不含任何元素,为false;只要包含元素,则为true。

(5)对象型,资源型,永远为true。

(6)空型,永远为false。

4.5.4 字符串型

字符串型的数据是表示在引号之间的。引号分为“”双引号和‘’单引号。这两种引号的表示方式都可以表示字符串。

但是这两种表示也有一定区别。

双引号几乎可以包含所有的字符。但是在其中的变量显示的是变量的值,而不是变量的变量名。而有些特殊字符加上“\”这一转义符号就可以了。

单引号内的字符是被直接表示出来的。

下面通过一个案例来讲述上面几种数据类型的使用方法和技巧。

【例4.8】(实例文件:ch04\4.8.php)

  <HTML>
  <HEAD>
      <title>变量的类型</title>
  </HEAD>
  <BODY>
  <?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;
  ?>
  </BODY>
  </HTML>

本程序运行结果如图4-8所示。

image

图4-8 程序运行结果

4.5.5 数组型

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

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

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

【例4.9】(实例文件:ch04\4.9.php)

  <HTML>
  <HEAD>
   <TITLE>数组变量</TITLE>
  </HEAD>
  <BODY>
  <?php
  $arr=array
  (
   0=>15,
   2=>1E+05,
   1=>"开始学习PHP基本语法了",
  );
  for ($i=0;$i<count($arr);$i++)
  {
         $arr1=each($arr);
         echo "$arr1[value]<br>";
  }
  ?>
  </BODY>
  </HTML>

本程序运行结果如图4-9所示。

image

图4-9 程序运行结果

【案例分析】

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

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

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

【例4.10】(实例文件:ch04\4.10.php)

  <HTML>
  <HEAD>
     <title>数组变量</title>
  </HEAD>
  <BODY>
  <?php
      $arr=array(15,1E+05,"开始学习PHP基本语法了");
    for ($i=0;$i<3;$i++)
    {
         echo $arr[$i]<br>";
    }
    ?>
  </BODY>
  </HTML>

本程序运行结果如图4-10所示。从结果可以看出,两种写法的运行结果一样。

image

图4-10 程序运行结果

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

【例4.11】(实例文件:ch04\4.11.php)

  <HTML>
  <HEAD>
     <title>数组变量</title>
  </HEAD>
  <BODY>
    <?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>";
      }
      ?>
  </BODY>
  </HTML>

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

image

图4-11 程序运行结果

4.5.6 对象型

对象就是类的实例。当一个类被实例化以后,这个生成的对象被传递给一个变量,这个变量就是对象型变量。对象型变量也属于资源型变量。本书的第10章将详细讲述对象。

4.5.7 NULL型

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

4.5.8 资源类型

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

4.5.9 数据类型之间相互转换

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

1.自动数据类型转换

这种转换方法最为常用。直接输入数据的转换类型即可。

例如float型转换为整数int型,小数点后面的数将被舍弃。如果float数超过了整数的取值范围,则结婚过可能是0或者整数的最小负数。

【例4.12】(实例文件:ch04\4.12.php)

  <HTML>
  <HEAD>
      <TITLE>自动数据类型转换</TITLE>
  </HEAD>
  <BODY>
     <?php
       $flo1=1.86;
       echo (int)$flo1."<br>";
       $flo2=4E32;//超过整数取值范围
       echo(int)$flo2;
     ?>
  </BODY>
  </HTML>

本程序运行结果如图4-12所示。

image

图4-12 程序运行结果

2.强制数据类型转换

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

Bool settype(var,string type)

提 示

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

【例4.13】(实例文件:ch04\4.13.php)

  <HTML>
  <HEAD>
     <TITLE>强制数据类型转换</TITLE>
  </HEAD>
  <BODY>
     <?php
        $flo1=1.86;
        echo setType($flo1,"int");
     ?>
  </BODY>
  </HTML>

本程序运行结果如图4-13所示。

image

图4-13 程序运行结果

教程类别