无法访问全局PHP数组变量

时间:2012-02-14 18:10:30

标签: php drupal-6 global-variables

在Drupal模块回调函数中,有一个简单的自定义函数可以进入数组。

当我在Drupal模块回调函数中定义输入数组时,自定义函数正确执行。但是,当我在根级别(全局)定义输入数组时,Drupal模块回调函数中的自定义函数将失败。

作为测试,我使自定义函数只是将输入数组的内容输出为字符串。第一种方法正确输出,而第二种方法没有任何输出。理想情况下,我想在全局级别定义数组,以便其他函数可以使用它。

思想?

<?php

// ** Placement of array for method 2
$mapping = array(
    0 => "name",
    1 => "match"
);

function mymodule_menu() {
    $items = array();

    $items['mymodule'] = array(
        'title' => 'MyModule',
        'page callback' => 'myModule_main',
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM
    );

    return $items;
}

function myModule_main() {

    // ** Placement of array for method 1
    $mapping = array(
        0 => "name",
        1 => "match"
    );

    $output = myFunction($mapping);

    echo $output; // ** Returned to client side via AJAX
}

2 个答案:

答案 0 :(得分:5)

您需要使用global关键字将全局变量“导入”到函数的范围中。

请参阅http://php.net/manual/en/language.variables.scope.php#language.variables.scope.global

function myModule_main() {
    global $mapping;
    ...
}

答案 1 :(得分:1)

<?php

global $foobar;
$foobar = "text";

function myFunction() {
    echo $GLOBALS["foobar"]; // Returns "text"
}

?>