0

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

4 に答える 4

4

置く

global $node_types;

配列定義の上および関数内。

于 2012-04-11T14:10:23.437 に答える
1

関数内で配列を宣言すると、関数が使用されるたびに新しい配列が作成され、配列のスコープは関数と同じ長さになります。Global 配列は、関数の外で宣言する必要があります。したがって、この場合は、例の先頭に配置する必要があります。

于 2012-04-11T14:23:25.600 に答える
0

関数内でグローバルな $node_typesを使用しないでください。新しい変数が作成されるため、関数はグローバルに持っている変数の代わりに null 変数を使用します。

于 2012-04-11T14:06:09.907 に答える
-5

私の推測では、関数呼び出しの後にグローバル定義を配置しました。

于 2016-02-23T14:04:10.480 に答える