首页 >后端开发 >php教程 >PHP声明变量

PHP声明变量

WBOY
WBOY原创
2016-06-23 14:30:261280浏览

2.4  变量

变量是指在程序的运行过程中随时可以发生变化的量,在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性等。变量的值是临时的,当程序运行的时候,该值是存在的,如果程序结束,变量的值就会丢失。虽然在前面的示例中也使用到了变量,但是没有详细的说明,本节将详细介绍如何创建变量,以及如何引用变量。

2.4.1  创建变量

PHP中的变量是用美元符号($)作为前缀的标示符,标识符是一个标识不同对象的符号,如变量的名称,函数的名称,或者其他用户自定义对象的名称。在PHP中,标识符的命名必须符合下面的规定:

l  标识符可以由一个或多个字符组成,但必须以字母或下划线开头。此外,标识符只能由字母、数字、下划线字符和从127到255的其他ASCII字符组成。如my_a、Ss、_value这些标识符名称都是合法的,而q^a、4tt这些变量的名称是不合法的。

l  标识符区分大小写。因此,变量$recipe不同于变量$Recipe、$rEciPe或$recipE。

l  标识符可以是任意长度。这很有好处,因为这样一来,程序员就能通过标识符名准确地描述标识符的用途。

l  标识符名称不能与任何PHP预定义关键字相同。

在创建变量的过程中,先声明变量,再给变量赋值是一个好的习惯。由于PHP是一种弱类型语言,在声明变量时,不需要显示声明变量,变量可以存放任何类型的值,在PHP中,变量在运行时进行类型检查,并且可以用另一个不同类型的值取代变量的值,下面声明一个变量,并且让另一个不同类型的值取代变量的值,再为声明一个没有赋值的变量,具体代码如下所示:

$what = “Yound Tang”;

$what = 25;

$name;

在PHP中,给变量赋值有两种方式,分别为值赋值和引用赋值。值赋值是直接把一个数值通过赋值表达式复制给变量,会把该变量原来的数值覆盖,如果在声明变量时,没有赋值,其行为就形同NULL。在声明变量时赋值是一种常用的变量的赋值方法,使用示例如下所示:

$name = “唐晓阳”;

$age = “23”;

$sex = “男”;

echo “你的姓名是:”.$name.”
”;

echo “你的年龄是:”.$age.”
”;

echo “你的性别是:”.$sex.”
”;

执行该段代码,执行结果如下所示:

你的姓名是:唐晓阳

你的年龄是:23

你的性别是:男

在PHP中,声明变量可以直接赋值,也可以不赋值,当需要使用变量存储值时,可以引用变量赋值,引用赋值表示所创建的变量与另一个变量引用的内容相同。因此,如果多个变量引用了同一个内容,修改其中任意一个变量,在其余的变量上都将有所反映。在等于号后面加一个&符号就可以完成引用赋值。引用赋值的示例形式如下所示。

$value1="Hello World";

$value2=& $value1;

$value2="GoodBye";

echo $value1.”
”;

echo $value2.”
”;

在上述代码中,创建一个变量value1并赋值为“Hello World”,在下面的语句中,变量$value2采用了引用赋值,即把value1的值赋给了value2,此时这两个变量就是一个生命共同体了,当一个发生变化,另外一个就会显示出结果,该段代码执行结果如下所示:

GoodBye

GoodBye

2.4.2  变量作用域

声明变量的位置决定了变量的作用域,变量的作用域决定了程序的那些部分可以访问该变量,那些部分不可以访问该变量,在PHP中,变量的作用域范围可以分为四类:局部变量、函数参数、全局变量和静态变量,本节主要介绍变量的这几种作用域范围。

1.局部变量

在一个函数中声明一个变量是那个函数的局部变量,也就是说该变量只能被函数内部成员访问,函数外部成员是不能访问该变量,并且不可见。默认情况下,函数内部成员不能访问函数外定义的变量(平常所说的的全局变量)。有时局部变量很有用,因为局部变量能够消除出现一位副作用的可能性,否则这些副作用将导致可全局访问的变量被有意或无意地修改。下面创建一个使用局部变量的示例,该示例如代码2.13所示。

代码2.13  使用局部变量

    $count =10;

    function AddCount()

    {

              $count = 100;

              $count = $count + $count;

              echo $count;

              echo "
";

}

AddCount();

echo $count;

?>

执行代码2.13,执行结果如下所示:

200

10

有输出结果知,该段代码输出了两个不同的值,这是因为函数AddCount函数中的变量为局部变量,修改局部变量的值不会影响函数外部的任何值,函数中的变量在程序结束时被抛弃,所以全局变量值还是10。

2.函数参数

在PHP中,函数可以接受相应的参数,虽然这些参数是接受函数外部的值,但退出函数后就无法访问这些参数,在函数执行结束后,参数的值就会消失,和函数的执行有很大的关系。函数参数是在函数后面的括号内声明,下面使用该参数创建一个示例,该示例如代码2.14所示。

代码2.14  运用函数参数

   function EchoNum($age,$class)

   {

         echo "你的年龄是:".$age."
";

echo "所在班级:".$class;

}

EchoNum(18,"计算机技术与科学系08级5班");

?>

执行该段代码,执行结果如下所示:

你的年龄是:18

所在班级:计算机技术与科学系08级5班

函数参数也可以称为是局部变量,意味着这些参数只在函数内部起作用,在函数的外部不能访问这些变量,同样当函数执行结束时,变量同样也会撤销。

3.全局变量

全局变量可以在整个PHP程序中,任何地方访问,但是如果要修改一个全局变量,必须在修改该变量的函数中显式的声明为全局变量,在函数中显示声明全局变量很简单,只需在函数中使用global关键字声明就可以,下面创建一个使用全局变量的示例,具体讲解在函数中如何修改全局变量,该示例如代码2.15所示。

代码2.15  在函数中修改全局变量

   function AddNum()

   {

        global $num;

        $num = $num + $num ;

        echo $num ;

   }

   $num = 100;

   AddNum();

?>

执行代码2.15,执行结果如下所示:

200

如果不在$num前加global,该变量会被认为是局部变量,此时页面上显示的值为0;添加global后,就可以修改全局变量了,声明全局变量还有另外一种方法,那就是使用PHP的$GLOBALS数组,使用该数组和使用global的效果一样,下面创建一个使用$GLOBALS数组的示例,该示例如代码2.16所示。

代码2.16  使用$GLOBALS数组

   function AddNum()

   {

        $GLOBALS['num'] =$GLOBALS['num']+$GLOBALS['num']  ;

        echo "该值是:".$GLOBALS['num'] ;

   }

   $num = 100;

   AddNum();

?>

执行代码2.16,执行结果如下所示:

该值是:200

 

 

在使用全局变量时,一定要注意,因为使用全局变量很容易发生意外。

 

4.静态变量

静态变量在两次调用函数之间其值不变,静态变量仅在局部函数域中声明,用关键字static可以声明一个静态变量。静态变量在函数退出时,不会丢失值,并且再次调用此函数时,还能保留值。下面创建一个使用静态变量的示例,该示例如代码2.17所示。

代码2.17  使用静态变量

   function keepNum()

   {

         static $num =0;

         $num ++;

         echo "现在静态变量的值是:".$num;

         echo "
";

}

$num = 10;

echo "变量num的值是:".$num."
";

keepNum();

keepNum();

?>

执行代码2.17,执行结果如下所示:

变量num的值是:10

现在静态变量的值是:1

现在静态变量的值是:2

由代码2.17执行结果知,由于在函数中指明了变量为静态变量,因此在执行函数时保留了前面的值。

2.3.3  变量的变量

创建一个变量,需要该变量赋值,当然也可以引用赋值,有时候也需要使用该变量的内容作为变量名,也就是说这个变量存放在另一个变量中。定义变量的变量只需要在变量的前面再添加一个美元符号即可。下面创建一个示例,该示例代码如下所示:

   $name = "Yound";

   $$name = " Tang";

   echo  $name.$$name;

?>

执行该端代码,执行结果如下所示:

Yound Tang

由上面例子知,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。就可以作为一个可变变量的变量了,这时,两个变量都被定义了

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn