PHP全局变量范围在函数之间不一样

时间:2013-08-13 05:14:58

标签: php scope global

我有一个关于php如何在使用带变量的global命令时测量范围的问题。 我在php代码的相同范围内有两个函数。 在loopitback中,全局命令按预期工作。 在loopitback_two中,全局命令不会获取$ global_arr。 我确实使用会话变量进行了测试,它运行正常。

在我看来,这两个功能是相同的,所以我期待有更多智慧的人。

感谢您抽出宝贵时间阅读本文。

编辑:添加更多代码

$global_arr = array(array());

function save_the_arr($sql_row1)
{
    global $global_arr;

    POPULATED ARRAY

    $_SESSION['queue']=$global_arr;
}

function loopitback($max)
{
    global $global_arr;

    $i = 0;
    while($i<$max)
    {
        echo "<tr><td>" . $global_arr[$i][0] . "</td></tr>";
        $i = $i+1;
        if($global_arr[$i][0]==NULL OR $global_arr[$i][0]=="")
            $i=$max;
    }
}

function loopitback_two($max)
{
    global $global_arr;

    $i = 0;
    while($i<$max)
    {
        echo "<tr><td>" . $global_arr[$i][0] . "</td></tr>";
        $i = $i+1;
        if($global_arr[$i][0]==NULL OR $global_arr[$i][0]=="")
            $i=$max;
    }
}

1 个答案:

答案 0 :(得分:0)

你需要在你的construct初始化全局变量。因为即使你把它定义为GLOBAL,它的实例也仅在那个函数中。如果你没有在{{{{}}中提及它,它将在下一个函数中重新定义它。 1}}喜欢

construct

编辑:如果您进行了修改,请在初始化时将function __construct() { global $global_arr; } function loopitback() { //Do something with it } function loopitback_two() { //Do something with it } 定义为$global_arr ..

global variable

如果您需要更多信息,请参阅THIS