PHP中的全局变量的一些小结

1.两个或以上函数互相调用时的全局变量问题
$name = 'caihuafeng';

fun1();

function fun1() {
    $name = 'caihf';
    fun2();

    echo __FUNCTION__ . " name: $name" . NEWLINE;
}

function fun2() {
    global $name;

    echo __FUNCTION__ . " name: $name" . NEWLINE;
}
输出如下:
fun2 name: caihuafeng
fun1 name: caihf

如果想在函数fun1中对全局变量$name的修改影响到函数func2中,则必须在函数fun1将$name定义为全局变量
$name = 'caihuafeng';

fun1();

function fun1() {
    global $name;
    $name = 'caihf';
    fun2();

    echo __FUNCTION__ . " name: $name" . NEWLINE;
}

function fun2() {
    global $name;

    echo __FUNCTION__ . " name: $name" . NEWLINE;
}
输出如下:
fun2 name: caihf
fun1 name: caihf

2、php中定义全局变量的几种方式
a、一种方式是在函数外面定义变量(不加$GLOBALS),在函数内部加上$GLOBALS进行调用(如debug('global1', $GLOBALS['global_test1']);)
b、一种试是在函数数外面定义变量(加$GLOBALS),,在函数内部加上$GLOBALS进行调用(如debug('global2', $GLOBALS['global_test2']);)
c、一种试是在函数数外面定义变量(不加$GLOBALS),在函数内部用global声明它为全局变量然后调用(debug('global3', $GLOBALS['global_test3']);)

$global_test1 = 'global var1';
$GLOBALS['global_test2'] = 'global var2';
$global_test3 = 'global var3';
function global_test() {
    global $global_test3;
    debug('function', __FUNCTION__);
    debug('global1', $GLOBALS['global_test1']);
    debug('global2', $GLOBALS['global_test2']);
    debug('global3', $global_test3);
}
global_test();

---------------------------------------------------
$var is a string, print as string
function:|global_test|
---------------------------------------------------
---------------------------------------------------
$var is a string, print as string
global1:|global var1|
---------------------------------------------------
---------------------------------------------------
$var is a string, print as string
global2:|global var2|
---------------------------------------------------
---------------------------------------------------
$var is a string, print as string
global3:|global var3|
---------------------------------------------------

function global_test($count = 3) {
    global $get_keys;
    $get_keys = array();
    //不能这样定义global $get_keys = array();
    for ($i = 0; $i < $count; $i++) {
        $get_keys[$i] = $i;
    }
}
global_test();
debug($get_keys, '', 'array');
---------------------------------------------------
$var is an array, print as array

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
)

---------------------------------------------------



上一篇: 网站常见的攻击手段
下一篇: php file_get_contents超时处理
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: php
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1503
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑