PHP 全局数组不起作用


PHP Global Array not working

我正在PHP函数外部创建一个数组并在函数内调用全局,但我的函数无法看到该数组。 该函数也被递归调用。 知道我做错了什么吗?

    $node_types = array( 1 => 'testproject',
                         2 => 'testsuite',
                         3 => 'testcase');

function get_subtree($node_id,&$node_list) {
    global $node_types;
    foreach ($node_types as $key)  { 
        echo("node_types: " . $key . "<BR>"); 
    }
    ....
    get_subtree($node_id,$node_list);
} 

我的错误:

Notice: Undefined variable: node_types in ...

谢谢

Put

global $node_types;

在数组定义之上以及函数内部。

在函数中声明数组将在每次使用该函数时创建一个新数组,并且数组的作用域仅与函数一样长。全局数组必须在函数外部声明。所以在这种情况下应该放在他的例子的顶部。

不要在函数中使用全局 $node_types。它将创建新变量,因此您的函数将使用 null 变量而不是您全局拥有的变量。

我的猜测是,您将全局定义放在函数调用之后。