谈谈PHP中的global全局变量-php教程

资源魔 46 0
家喻户晓,正在PHP的函数中,假如想应用全局变量,一种是应用超全局变量$GLOBALS,另外一种是正在函数中应用global要害字申明,应用超全局变量$GLOBALS的形式各人都晓得了,明天来好好聊一聊应用global形式来申明变量。

咱们来看以下例子:

$a = 1;
$b = 2;
function test() {
    global $a, $b;
}
test();

当咱们执行test()函数时,正在内存中变量的状态是甚么样的呢?以下图所示

咱们申明了test函数,当挪用test()函数时,global会正在函数中申明两个部分变量$a, $b,而且辨别指向全局变量$a以及$b,此时的暂时变量$a以及$b相称于全局变量$a以及$b的援用。以是咱们正在函数中修正部分变量$a以及$b的值就同等于修正了全局变量的值。

$a = 1;
$b = 2;
function test() {
    global $a, $b;
    $a = 11;
    $b = 12;
    unset($a);
    unset($b);
}
test();
echo $a;
echo '<br>';
echo $b;

阅读器上打印输入:

11
22

下面的代码中还应用了unset(),经过echo输入能输入全局变量$a, $b的值,这也阐明test()函数里经过global要害字申明的$a以及$b只是部分变量,unset()只是断开下场部变量与全局变量的援用。

咱们来看另外一种状况,假如咱们正在test函数中申明的变量正在全局变量中并无呢?

先说论断:假如正在函数中应用global要害字申明的变量正在全局作用域并无同名变量,那末会先创立同名全局变量,再正在函数中创立部分变量,同时将全局变量的援用指向部分变量。

function test() {
    global $a, $b;
    $a = 11;
    $b = 22;
    unset($a);
    unset($b);
}
echo $a;
echo '<br>';
echo $b;

经过阅读器输入:

11
22

下面的代码,咱们正在test函数中应用global申明了变量$a, $b,尽管全局作用域并无申明$a以及$b,然而global仍然会先创立全局变量$a以及$b,而后正在test函数中创立$a, $b,而后把全局变量的援用指向test函数的部分变量。以是即便咱们正在函数中unset了$a以及$b,正在函数执行实现后咱们仍然能打印出$a以及$b,由于全局变量中曾经存正在着两个变量了。

以是咱们终极能够对患上出以下论断:

正在函数中应用global申明变量时,会先正在全局作用域查找能否有同名变量,假如有则将该全局变量的援用指向应用global申明的同名部分变量。假如全局作用域不同名变量,那末就先创立同名全局变量,再创立部分变量,而后把全局变量的援用指向部分变量。

相干教程:PHP视频教程

以上就是谈谈PHP中的global全局变量的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 global全局变量

抱歉,评论功能暂时关闭!