ddxiami

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2948|回复: 4

[细说PHP] 第8章PHP函数的应用--php变量的范围

[复制链接]
发表于 2013-7-31 17:12:37 | 显示全部楼层 |阅读模式
局部变量

<?php
        /**
                测试局部变量的演示函数
                $param        int        $one        需要一个整型的参数,测试是否为局部变量
        */
        function demo( $one ) {         
                $two = 100;                                                                                       //在函数内部声明一个变量
                echo "在函数内部执行:$one + $two =".($one+$two)."<br>";         //在函数内部使用两个局部变量
        }

        demo( 200 );                                                                                           //调用demo函数传入200赋值给参数$one
        echo "在函数外部执行:$one + $two =".($one+$two);                            //在函数外部使用两个变量,非法访问
?>



<?php
        /**
                测试局部变量的演示函数
                $param        int        $one                需要一个整型的参数,测试是否为局部变量
        */
    function demo( $one ) {                                                 //声明一个函数demo,需要传入一个整型参数
                $two = 100;                                                       //在函数内部声明一个变量
                return $one+$two;                                                     //将函数的运算结果使用return语句返回到函数调用处
        }
       
        $sum = demo(200);                                                         //调用demo函数传入200赋值给参数$one,并将返回值赋给变量$sum
        echo "在函数外部使用函数中运算结果:$sum <br>"; //在函数外部可以使用函数返回的结果
?>
回复

使用道具 举报

 楼主| 发表于 2013-7-31 17:24:05 | 显示全部楼层
局部变量会覆盖全局变量的能见度,因此在函数中无法直接调用全局变量。

<?php
           $one = 200;                                                                //在函数外部声明一个全局变量$one值为200;
        $two = 100;                                                                //在函数外部声明一个全局变量$two值为100;
       
        /**
                用于测试在函数内部不能直接使用全局变量$one和$two
        */
        function demo(){         
                echo "运算结果:".($one+$two)."<br>";  //相当于在函数内部新声明并且没赋初值的两个变量
        }
       
        demo();                                                                  //调用函数demo
?>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-31 17:26:52 | 显示全部楼层
函数中若要使用全局变量,必须要利用global关键字定义目标变量,以告诉函数主体此变量为全局变量

<?php
           $one = 200;                                                                //在函数外部声明一个全局变量$one值为200;
        $two = 100;                                                                //在函数外部声明一个全局变量$two值为100;
        
        /**
                用于测试在函数内部使用global关键字加载全局变量$one和$two
        */
        function demo(){         
                //在函数内部使用global关键字加载全局变量,加裁多个使用逗号分隔
                global $one, $two;
               
                echo "运算结果:".($one+$two)."<br>";   //使用到了函数外部声明的全局变量
        }
        
        demo();                                                                  //调用函数demo
?>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-31 17:29:01 | 显示全部楼层
利用PHP自定义的$GLOBALS数组处理全局变量

<?php
           $one = 200;                                                                //在函数外部声明一个全局变量$one值为200;
        $two = 100;                                                                //在函数外部声明一个全局变量$two值为100;
       
        /**
                用于测试在函数内部使用$GLOBALS访问全局变量
        */
        function demo(){         
                $GLOBALS['two'] = $GLOBALS['one'] + $GLOBALS['two'];
        }
       
        demo();                                                                  //调用函数demo
        echo $two;                                                                        //输出结果300,说明全局变量被访问到重新被赋值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-31 17:34:52 | 显示全部楼层
静态变量:局部变量中分动态存储类型和静态存储类型。不专门用static声明存储类别,默认为动态地分配存储空间。静态变量在函数执行完后并未消失,在所有对该函数的调用之间共享。

<?php
        /**
                声明一个名为test的函数,测试在函数内部声明的静态变量的使用
        */
        function test() {                 //声明一个名为test的函数
                static $a = 0;              //定义一个静态变量$a,并赋初值为0
                echo $a;                          //输出变量$a的值
                $a++;                            //将变量$a自增1
        }
        test();                                //第一次运行,输出0
        test();                                //第二次运行,输出1
        test();                                //第三次运行,输出2
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|技术文档库 ( 闽ICP备15017263号-2 )|网站地图

GMT+8, 2025-5-19 00:29 , Processed in 0.036124 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表