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