1
2
3
4
5
6
7
8
9
10
11

PHP中的变量

发布时间:2017-07-20 07:56   发布人:毛书朋   浏览次数:6513

PHP中的变量

PHP中的类型转换

PHP中的变量的变量和引用变量

关联课件:  4子项目四 -PHP中的变量(点击在线预览)


4.3.3  PHP中的变量

PHP中预先定义了很多变量,用户可以随时在脚本中引用。PHP的预定义变量将在后面的章节进行讲解,下面主要讲解自定义变量。

4.3.3.1  变量定义与变量类型

在PHP中一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母、数字或下划线。PHP的变量属于松散的数据类型,具体使用时应注意以下几点。

(1) 变量名要以“$”开头,且区分大小写。

(2) 变量不必要预先定义或声明。

(3) 变量在使用时编译器可动态进行类型指定和转换。

(4) 变量如果未赋值而直接使用,变量值将被视为空。


提示

最好使用相同的变量命名风格,以免在团队合作或自己查找错误的时候因变量大小的问题,浪费过多时间,那就得不偿失了。变量之间可自由转换类型,但浮点数转成整数就有点牵强了,可以将浮点数转换成字符串,这是很好处理的。



PHP支持8种原始变量类型,其中包含4种标量类型、2种复合类型、2种特殊类型,如表4-1所示。

4-1.PNG

        下面,分别介绍这8种变量类型。

        1.布尔型(boolean)

        布尔型是最简单的类型,也被称为逻辑型,其值非真即假,主要用在条件表达式和逻辑表达式中,用以控制程序流程。要指定一个布尔值,使用关键字TRUE或FALSE(两个都不区分大小写)。其他类型的数据均可以转换为布尔型,详见类型转换。

        2.整型(integer)

        整型数的字长和平台有关,最大值大约是二十亿(32位有符号)。

        整型值可以用十进制、十六进制或八进制符号指定,前面可以加上可选的符号(-或者+)。要使用八进位整数可以在面加0(零),要使用16进位整数可以在面加0x。

        $int1=1234                       //十进制正整数

        $int1=-1234        //负整数

        $int1=01234         //八进制整数

        $int1=0x1234        //十六进制整数

        3.浮点型(double (floating point number))

        在32位的操作系统中,它的有效范围是1.7E-308~1.7E 308,如:

        $float1=666.66

        $float2=6.6666e2           //表示6.6666乘以10的2次方,为指数形式的浮点数

        值得注意的是,浮点型变量显示的十进制数的位数由php.ini文件中的precision(精度)定义,预定值为12,即浮点数最长占14个字符。

        4.字符串(string)

        无论是单个字符还是很长的字符串都是使用这个变量类型。值得注意的是要将指定字符串赋值给字符串变量时,要在头尾都加上双引号或单引号(例如:"这是字符串"或'这是字符串')。在PHP中还提供一些转义字符,用以表示那些已经被程序语法结构占用了的特殊字符,如表4-2所示。

4-2.PNG

提示

有了PHP变量的理论知识,下面来通过实例来看其具体使用。

<!--文件4-7.php:PHP变量的使用=>布尔型、整型、浮点型、字符串-->
<HTML>
<HEAD>
    <TITLE>PHP变量的使用之一</TITLE>
</HEAD>
<BODY>
    <?php
        $string1 = "输出字符串变量类型的内容!";
        echo $string1; //输出字符串变量“$string1”的内容
        echo "<br>"; //输出换行

        $string2 = "输出特殊字符:";
        echo $string2 . "";
        echo "$";
        echo ''';
        echo """;
        echo "x52";
        echo "<br>";
        $int1=01234;                // 八进制整数
        $int2=0x1234;                // 十六进制整数
        
        echo "输出整型变量的值:";
        echo $int1;                // 输出668
        echo "  ";                // 输出一个制表位
        echo $int2;                // 输出4660
        echo "<br>";

        $float1=6.6666e2;
        echo "输出浮点型变量的值:";
        echo $float1;                // 输出666.66
        echo "<br>";
        echo "输出布尔型变量的值:";
        echo (boolean)($int1);            // 输出转换后的布尔变量--“1”
    ?>
</BODY>
</HTML>

            程序4-7.php涉及到了变量类型中的字符串、整型、浮点型、布尔型变量的使用,其运行结果如图4-7所示。

4-7.jpg

图4-7  程序4-7.php的运行结果

            5.数组(array)

            数组变量可以是一维数组、二维数组或者更多维数组,其中的元素可以为多种类型,可以是字符串、整型、浮点型、布尔型,甚至是数组或对象等。

            在PHP中可以使用array()函数来创建数组,也可以直接进行赋值。使用array()来创建数组的语法为:

            array( [ key => ] value,

                 …

                )

            其中key可以是integer或者string,是以后存取的标志。特别地,当为integer时,没有序号意义,value可以是任何值。

            用array()函数创建数组的方法如程序4-8.php所示。

<!--文件4-8.php:用array()函数创建PHP数组-->
<HTML>
<HEAD>
    <TITLE>用array()函数创建PHP数组</TITLE>
</HEAD>
<BODY>
    <?php
        $arr=array
        (
            0=>6,
            2=>6.666e2,
            1=>"我爱PHP",
            "str"=>"string",
        );
        for ($i=0;$i<count($arr);$i  )
        {
            $print=each($arr);
            echo "$print[value]<br>";
        }
    ?>
</BODY>
</HTML>

            程序中使用for循环用来输出整个数组。其中函数count()用来计算出数组元素的个数,函数each()返回当前数组指针的索引/值对,在后面的章节还将会讲到。程序4-8.php的运行结果如图4-8所示。

4-8.jpg

         图4-8  程序4-8.php的运行结果

            我们也可以采用将给一个一个数组元素赋值的方法,如程序4-9.php所示。

<!--文件4-9.php:逐一给数组元素赋值-->
<HTML>
<HEAD>
    <TITLE>逐一给数组元素赋值</TITLE>
</HEAD>
<BODY>
    <?php
        $arr[0]=6;
        $arr[2]=6.666e2;
        $arr[1]="我爱PHP";
        $arr["str"]="string";
        for ($i=0;$i<count($arr);$i  )
        {
            $print=each($arr);
            echo "$print[value]<br>";
        }
    ?>
</BODY>
</HTML>

            使用上面这种简洁方式给数组赋值时,数组的默认下标为0、1、2、3。程序4-10的运行结果与程序4-8.php的运行结果相同。

            PHP中多维数组与一维数组的区别在于多维数组有两个或多个下标,其用法基是一样的。程序4-11就是采用逐一给二维数组元素赋值的方法来创建和使用二维数组的。

<!--文件4-11.php:多维数组的逐一赋值法-->
<HTML>
<HEAD>
    <TITLE>多维数组的逐一赋值</TITLE>
</HEAD>
<BODY>
    <?php
        $arr[0][0]=6;
        $arr[0][1]=6.666e2;
        $arr[1][0]= "我爱PHP";
        $arr[1]["str"]="string";
        for ($i =0;$i<count($arr);$i  )
        {
            for ($j = 0;$j<count($arr[$i]);$j  )
            {
                $print=each($arr[$i]);
                echo "$print[value]<br>";
            }
        }
    ?>
</BODY>
</HTML>

            其运行结果与程序4-8.php运行结果相同。

            还可以使用层次更明显、更容易理解和接受的多维数组赋值方式:嵌套的array()函数方式来创建PHP数组并给数组元素赋值,如程序4-12所示。

<!--文件4-12.php:用嵌套的array()函数创建PHP数组-->
<HTML>
<HEAD>
    <TITLE>用嵌套array()函数创建PHP数组</TITLE>
</HEAD>
<BODY>
    <?php
    $arr=array
    (
        0=>array
        (
            0=>6,
            2=>6.666e2,
),                 //此处应该是“,”,而不是“;”
        1=>array
        (
            0=>"我爱PHP",
            "str"=>"string"
        )
    );
    for ($i =0;$i<count($arr);$i  )
    {
        for ($j = 0;$j<count($arr[$i]);$j  )
        {
            $print=each($arr[$i]);
            echo "$print[value]<br>";
        }
    }
    ?>
</BODY>
</HTML>

            其运行结果与程序4-8.php运行结果相同。

            6.对象(object)

            object为对象类型变量,是类的具体化实例,第4章会对其进行详细讲解。

            7.资源(resource)

            资源是一种特殊变量,其中保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。资源类型变量保存了打开文件、数据库连接、图形画布区域等的特殊句柄,在后面的章节中会陆续学习到。

            8.NULL

            NULL类型只有一个值,就是大小写敏感的关键字NULL,表示一个变量没有值。

            在下列情况下一个变量的值被认为是NULL。

            (1)被赋值为NULL。

            (2)尚未被赋值。

            (3)被unset()(销毁指定的变量)。

            
提示





       4.3.3.2  变量类型转换

            前面已经提到过,PHP的变量属于松散的数据类型,也就是说PHP在变量定义时不需要(或不支持)类       型定义,变量的类型是根据使用该变量的上下文所决定的。如果把一个字符串值赋给变量var,var就成了一       个字符串;如果又把一个整型值赋给var,那它就成了一个整数。

            在PHP中是怎样处理变量不同类型间的相互转换的呢?PHP提供了两种类型转换的方法:自动类型转换      和强制类型转换。

            PHP的自动类型转换的一个例子是加号“ ”。如果任何一个运算数是浮点数,则所有的运算数都被当成     浮点数,结果也是浮点数。否则运算数会被解释为整数,结果也是整数。注意这并没有改变这些运算数本身       的类型;改变的仅是这些运算数如何被求值。也就是说,自动类型转换并不能改变变量本身的数据类型,改       变的仅仅是变量作为运算数时被求值得方式。

            PHP中的类型强制转换和C中的强制类型转换相似:在要转换的变量之前加上用括号括起来的目标类型。     允许的强制转换如下。

            (int)或(integer):转换成整型。

            (bool)或(boolean):转换成布尔型。

            (float)、(double)或(real):转换成浮点型。

            (string):转换成字符串。

            (array):转换成数组。

            (object):转换成对象。

            其使用方法为:

            (int)$变量名或(integer)$变量名

            为了便于理解,现举例如下。

<!--文件4-13.php:变量类型转换-->
<HTML>
<HEAD>
    <TITLE>变量类型转换</TITLE>
</HEAD>
<BODY>
    <?php
    $var1 = "0";                 //$var1是一个字符串
    echo $var1."<br>";

    $var2 =$var1   2;            //$var2是一个整数
    echo $var2."<br>";

    $var3 = $var2   1.3;         //$var3是一个浮点数
    echo $var3."<br>";

    $var4 = 5   "10 PHP 5.2";    //整数与字符串相加结果为正数
    echo $var4."<br>";

    $var5 = 5   "PHP 5.2";        //整数与字符串相加结果为正数
    echo $var5."<br>";

    $var6 = (bool)-2;    
    //-1和其他非零值(不论正负)转换成布尔型,都被认为是TRUE!
    echo $var6."<br>";

    $var7 = 10/3;
    echo $var7."<br>";

    $var8 = (int)$var7;          //强制转换为整数
    echo $var8."<br>";

    $var9=1.3e5;
    $var10 = (float)$var9;   //强制转换为浮点数
    echo $var10."<br>";
    
    $var11 = (string)$var3;
    echo "$var11的类型为:".gettype($var11)."<br>";
    //gettype()为获取变量类型的函数
    ?>
</BODY>
</HTML>

            程序4-13.php运行结果如图4-9所示。

4-9.jpg

图4-9  程序4-13.php的运行结果

            4-13.php中仅举例说明了部分类型转换,转换为布尔值时需要注意以下几点。

            当转换为boolean时,以下值被认为是FALSE。

            (1)布尔值FALSE。

            (2)整型值0(零)。

            (3)浮点型值0.0(零)。

            (4)空白字符串和字符串"0"。

            (5)没有成员变量的数组。

            (6)没有单元的对象(仅适用于PHP 4)。

            (7)特殊类型NULL(包括尚未设定的变量)。

            所有其他值都被认为是TRUE(包括任何资源)。值得注意的是,-1和其他非零值(不论正负)一样,       被认为是TRUE!在求表达式的值和条件判断时一定要注意!

         4.3.3.3 “变量的变量”

            “变量的变量”是指在变量的名称中含有其他变量的一类变量。其实“变量的变量”这个名称并不太准        确,有的地方也称为可变变量或动态变量。也就是说,通过“变量的变量”可以实现动态地设置和使用一个      变量的变量名。通过程序4-14.php就很容易理解它的使用方法。

<!--文件4-14.php:变量的变量-->
<HTML>
<HEAD>
    <TITLE>变量的变量</TITLE>
</HEAD>
<BODY>
    <?php
        $var = 'hello';
        $$var = ' world!';           // 定义变量的变量
        echo $var.${$var}."<br>";    // 输出变量的变量
        echo $var.$hello;            // 输出变量的变量
    ?>
</BODY>
</HTML>

            程序4-14.php的运行结果如图4-10所示。

4-10.jpg


图4-10  程序4-14.php的运行结果

            从程序中不难发现定义变量的方法,如第9行所示输出或使用变量的变量的方法有两种,如第10行和11       行,而且这两方法的效果是一样的。

                    

提示





      4.3.3.4  引用变量

            PHP中支持引用变量,这是从C  语言中借用而来的。对一个变量进行引用产生新变量后,新变量可以       看作是原变量的一个别名,改变其中任何一个的值,两个变量的值都会发生改变。使用引用变量的方法是赋       值时在右边变量前加“&”符号,如程序4-15.pnp所示。

<!--文件4-15.php:引用变量-->
<HTML>
<HEAD>
    <TITLE>引用变量</TITLE>
</HEAD>
<BODY>
    <?php
        $int1=8;
        $int2=&$int1;
        $int2   ;
        echo $int1;
    ?>
</BODY>
</HTML>

            程序4-15.php的运行效果如图4-11所示。

4-11.jpg

图4-11  程序4-15.php的运行结果

            引用变量在进行赋值时,系统让新变量和原变量共用一个地址,并没有变量复制的操作,所以速度非常        快。如果参数是大数组或对象,使用引用变量进行参数传递能节省内存并加快程序运行速度。不过其副作用      就是引用值改变,原变量也会发生改变,因此是否能使用引用变量进行参数传递要视具体情况而定。



  • 赵博文 2018-01-07 15:57:31
    1.变量特点: 在定义后后还可以多次赋值 定义在那个范围就在那个范围有效,如函数中定义的变量就只在函数中有效。 可以通过unset()销毁 2.常量特点 常量前面面没有$符号 常量只能通过define()函数定义或者是const关键字定义(const定义常量,是在php5.3版本后),如 define('PI',3.14)或者const PI=3.14 且值只能是标量,即可以是 整型 浮点型 布尔型 null 字符串等。在定义后,无论在那定义,都可以直接调用,没有作用域。定义后不可以再赋值一直存在内存中,不能被销毁。常量的值 不能是 数组 对象 资源,可以通过 bool defined() 函数判断某个常量是否已经被定义了。
  • 刘鑫蕊 2018-01-09 16:12:38
    老师讲的很详细,从中学到了很多。
  • 岳猛 2018-01-09 16:17:48
    对于PHP变量有了一个基本的了解
  • 魏德旺 2018-01-09 16:23:52
    还可以这么玩
  • 甄丹丹 2018-01-09 16:29:19
    这些语法基础对于刚学习PHP的人来说是非常重要的,条理清晰,方便学习
  • 李文杰 2018-01-09 17:59:47
    6666
  • 李倩文 2018-01-10 11:58:08
    引用变量在进行赋值时,系统让新变量和原变量共用一个地址,并没有变量复制的操作,所以速度非常 快。如果参数是大数组或对象,使用引用变量进行参数传递能节省内存并加快程序运行速度。不过其副作用 就是引用值改变,原变量也会发生改变,因此是否能使用引用变量进行参数传递要视具体情况而定。