PHP全局数组无法正常工作

时间:2012-04-11 13:49:28

标签: php arrays

我在PHP函数之外创建一个数组并在函数内部调用global,但是我的函数无法看到数组。该函数也称为递归调用。知道我做错了吗?

    $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 ...

由于

4 个答案:

答案 0 :(得分:3)

global $node_types;

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

答案 1 :(得分:1)

在函数中声明一个数组将在每次使用该函数时创建一个新数组,并且该数组的范围仅与该函数一样长。必须在函数之外声明全局数组。因此,在这种情况下,应放在示例的顶部。

答案 2 :(得分:-1)

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

答案 3 :(得分:-5)

我猜,你在函数调用之后放置了全局定义。