首页  >  文章  >  后端开发  >  PHP中变量与常量实例分析

PHP中变量与常量实例分析

小云云
小云云原创
2018-03-15 13:09:051514浏览

PHP有四种不同的变量作用域:static ,  parameter, global,  local.

1. 全局变量

在所有函数外定义的变量拥有全局作用域,在函数内部声明的变量是局部变量,仅能在函数内部访问。要在一个函数中使用全局变量,需要使用global关键字。

 <?php
$a = 1;
$b = 2;
function Sum()
{
    global $a, $b;
    $b = $a + $b;
}
Sum();
?>

在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:

 <?php
$a = 1;
$b = 2;
function Sum()
{
    $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum();
?>

2. 静态变量

变量范围的另一个重要特性是静态变量(staticvariable)。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。

定义在函数中的静态变量在函数外不能调用。

静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。

 <?php
function Test()
{
    static $count = 0;
    $count++;
    echo $count;
    if ($count < 10) {
        Test ();
    }
    $count--;
}
?>

3. 局部变量

参数是通过调用代码将值传递给函数的局部变量。

4. 可变变量

有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:

<span style="color:#000000;"><span style="color:#0000BB;">3b830563c25e5a384af90b185aff39d7</span></span>

一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。在上面的例子中hello 使用了两个美元符号($)以后,就可以作为一个可变变量的变量了。例如:

<span style="color:#000000;"><span style="color:#0000BB;">0866218afc3127d68012a3c0b8648436</span></span>

这时,两个变量都被定义了:$a 的内容是“hello”并且$hello 的内容是“world”。因此,可以表述为:

<span style="color:#000000;"><span style="color:#0000BB;">f5768488027307d1b3956c7da0cb8c3a</span></span>

以下写法更准确并且会输出同样的结果:

<span style="color:#000000;"><span style="color:#0000BB;">a4b97cc2c1c24866c46df264f35790dd</span></span>

它们都会输出:hello world

要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下$$a[1]时,解析器需要知道是想要$a[1]作为一个变量呢,还是想要$$a作为一个变量并取出该变量中索引为 [1]的值。解决此问题的语法是,对第一种情况用${$a[1]},对第二种情况用${$a}[1]

注意可变变量不能用于 PHP 的超全局变量数组。这意味着不能这样用:${$_GET}

5. 常量

<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>
  • 常量前面没有美元符号($);

  • 常量默认为大小写敏感。按照惯例常量标识符总是大写的。

  • 常量只能用 define() 函数定义,而不能通过赋值语句;

  • 和 superglobals 一样,常量的范围是全局的。不用管作用域就可以在脚本的任何地方定义和访问常量;

  • 常量一旦定义就不能被重新定义或者取消定义;

  • 常量的值只能是标量数据(booleanintegerfloat 和 string)或 null。

1. 自定义常量

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>

2. 类常量

    可以在类中定义常量,常量的值必须是一个定值,不能是变量,类属性或其它操作(如函数调用)的结果。但在PHP5.6中,对常量进行了增强,允许常量计算,允许使用包    含数字、字符串字面值和常量的表达式结果来定义const常量。常量的值也可以为一个数组,但不能是变量。

    定义类常量只能使用const关键字

    class MyClass {
        const AB = 2;
        public function showConstant(){
            echo self::AB;
        }
    }

 const 与 define 的区别?

1、const用于类成员变量的定义,一经定义,不可修改。Define不可以用于类成员变量的定义,可用于全局常量。

2、Const可在类中使用,define不能

3、Const不能再条件语句中定义常量

4、const采用普通的常量名称,define可以采用表达式作为名称

相关推荐:

php中变量的命名规则具体详解

浅谈php中变量的数据类型判断函数实例代码

php中变量及部分适用方法_PHP教程

以上是PHP中变量与常量实例分析的详细内容。更多信息请关注PHP中文网其他相关文章!

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