PHP全局变量范围在函数之间不相同


PHP Global variable scope not the same between functions

我有一个问题,当使用带有变量的全局命令时,php如何测量范围。我在php代码的同一范围内有两个函数。在环回中,全局命令按预期工作。在loopitback_two中,global命令不会获取$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;
    }
}

您需要在construct中初始化全局变量。因为即使您将其定义为global,它的实例也仅在该函数中。如果你没有像一样在construct上提到它,它会在下一个函数中重新定义它

function __construct() {
    global $global_arr;
}
function loopitback() {
    //Do something with it
}
function loopitback_two() {
    //Do something with it
}

编辑:如果进行编辑,请在初始化时将$global_arr定义为global variable。。

global $global_arr = array();
function save_the_arr($sql_row1) {
}

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