大道PHP
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.4 在哪里起作用——函数的作用域

函数的作用域

在PHP中,函数的作用域用来控制函数及函数中的变量在哪里是可见并且可用的。不同的编程语言有不同的变量作用域规则,PHP中的函数及函数中的变量作用域规则如下:

● 函数的作用域是指在函数内部声明的变量作用域是从声明的那条语句开始到该函数的末尾。

● 全局作用域是指在函数外部声明的变量作用域是从声明那条语句开始到声明所在的文件末尾。

● 使用关键字global或$GLOBALS[]数组可以手动指定一个函数中使用的变量为全局变量。

● 通过参数列表传递给函数的变量,对于函数来说是局部变量,但是在传递时带有引用符号(&)的例外。

● 可以使用unset()函数手动删除一个变量,该变量也在其作用域内同时被销毁。

● 使用require()和include()这两个函数并不会影响作用域。如果它们用于函数内部,则函数作用域适用。如果它们不在函数内部,则全局作用域适用。

我们通过下面的示例来深入理解函数作用域,代码如下:

代码3-9光盘\codes\第3章\3.4\scope.php

      <?php
      $price=0;                                         //定义全局变量
      function sale($price) {
          $price=100;                                   //定义局部变量
          $newPrice=$price*0.95;                        //促销商品为9.5折
          echo "商品的原价为:".$price."<br>";
          return$newPrice;                              //返回变量$newPrice的值
      }
      echo "商品的折扣价为:".sale($price)."<br>";
      echo "商品的原价为:".$price;
      ?>

该程序被执行时,运行结果如图3-9所示。

图3-9 函数的作用域