Can';t访问全局PHP数组变量

Can';t访问全局PHP数组变量,php,drupal-6,global-variables,Php,Drupal 6,Global Variables,在Drupal模块回调函数中,有一个简单的自定义函数,它包含一个数组 在Drupal模块回调函数中定义输入数组时,自定义函数正确执行。但是,当我在根级别(全局)定义输入数组时,Drupal模块回调函数中的自定义函数失败 作为测试,我让自定义函数简单地将输入数组的内容作为字符串输出。第一个方法正确输出,而第二个方法没有任何输出。理想情况下,我希望在全局级别定义数组,以便其他函数可以使用它 想法 <?php // ** Placement of array for method 2 $map

在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
}
您需要使用
global
关键字将全局变量“导入”到函数的作用域中



如何显示您的代码?请发布回拨代码。请添加一些示例代码,以便我们能够准确地看到您正在执行的操作。可能重复或使用$GLOBALS['mapping']。此方法不会将变量导入当前范围,而是直接使用它。如果你不会多次使用这个变量,那就太好了。@Diegaouguló感谢你为我指明了正确的方向。实际可行的解决方案是两种回答的组合。我已经更新了“按问题”以包含解决方案(因为我目前没有足够的代表自行回答我的问题)。很高兴听到这个消息!不过,它还可以改进。在这种情况下,您是否尝试过避免使用
global
?删除它是安全的,因为变量已经在全局范围内创建。@DiegoAgulló不幸的是,这对我不起作用。要检测我的数组,我需要在根级别将其定义为全局数组。然后,我可以使用GLOBALS在函数中访问它。
function myModule_main() {
    global $mapping;
    ...
}
<?php

global $foobar;
$foobar = "text";

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

?>