在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
}
答案 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"
}
?>