PHP声明变量

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

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.”<br/>”;

echo “你的年龄是:”.$age.”<br/>”;

echo “你的性别是:”.$sex.”<br/>”;

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

你的姓名是:唐晓阳

你的年龄是:23

你的性别是:男

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

$value1="Hello World";

$value2=& $value1;

$value2="GoodBye";

echo $value1.”<br/>”;

echo $value2.”<br/>”;

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

GoodBye

GoodBye

2.4.2  变量作用域

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

1.局部变量

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

代码2.13  使用局部变量

<?php

    $count =10;

    function AddCount()

    {

              $count = 100;

              $count = $count + $count;

              echo $count;

              echo "&lt;br/>";

    }

    AddCount();

    echo $count;

?&gt;

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

200

10

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

2.函数参数

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

代码2.14  运用函数参数

<?php

   function EchoNum($age,$class)

   {

         echo "你的年龄是:".$age."&lt;br/>";

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

   }

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

?&gt;

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

你的年龄是:18

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

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

3.全局变量

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

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

<?php

   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数组

<?php

   function AddNum()

   {

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

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

   }

   $num = 100;

   AddNum();

?>

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

该值是:200

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

4.静态变量

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

代码2.17  使用静态变量

<?php

   function keepNum()

   {

         static $num =0;

         $num ++;

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

         echo "&lt;br/>";

   }

   $num = 10;

   echo "变量num的值是:".$num."<br/>";

   keepNum();

   keepNum();

?&gt;

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

变量num的值是:10

现在静态变量的值是:1

现在静态变量的值是:2

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

2.3.3  变量的变量

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

<?php

   $name = "Yound";

   $$name = " Tang";

   echo  $name.$$name;

?>

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

Yound Tang

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • php判断客户端UserAgent

    1 <?php 2 //echo $_SERVER['HTTP_USER_AGENT'];exit; 3 //var_dump(stripos($_SER...

    joshua317
  • 关于线上测试环境的思考

    问题: 由于现在线上代码都是通过git pull 方式获取最新代码,但是出现的问题是,线下测试是好的,但线上拉取代码后,不能保证代码是正常运行; 想到的解决方法...

    joshua317
  • SQL中的DML、DDL以及DCL

    DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这...

    joshua317
  • Powershell中的变量

    在我们的迷你系列“Variables in Shells”中,了解如何在PowerShell中处理局部变量。

    QRosie
  • VBA程序的变量和常量

    大家好,在本节就主要介绍变量和常量,主要掌握声明变量和变量赋值,变量的作用域和存活期需要理解。

    无言之月
  • 一文读懂R中的探索性数据分析

    探索性数据分析(EDA)是数据项目的第一步。我们将创建一个代码模板来实现这一功能。 简介 EDA由单变量(1个变量)和双变量(2个变量)分析组成。

    1480
  • 机器学习实战 | 数据探索(变量变换、生成)

    1.1、什么是变量变换? 在数据建模中,变换是指通过函数替换变量。 例如,通过平方/立方根或对数x替换变量x是一个变换。 换句话说,变换是一个改变变量与其他变量...

    用户1332428
  • 用Python进行速度预测

    这次分享一段数据特征挖掘准备工作的套路~ 数据格式是这样的: ? task 预测值:速度 特征值: Region 区域 Length 长度Volume 流...

    企鹅号小编
  • 手把手教你绘制临床三线表

    各位科研芝士的小伙伴,本站本着给大家提供科研便利的宗旨,继续给大家提供干货, 一般的临床研究,统计分析就“三把斧”:统计描述、差异性比较和回归建模。R语言完美解...

    百味科研芝士
  • Tableau基础知识1.文件与数据1.1 Tableau文件类型2.制表3.绘图

    用户1250179

扫码关注云+社区

领取腾讯云代金券