假设我在启动时有一个类似的代码:
if (!isset($_GLOBALS['something'])){
getAndWriteToGlobals($x, $y)
}
显然属于getAndWriteToGlobals
函数,它做了很少的事情并将另一个数据放入$_GLOBALS['something'][$ee] = $value ->
它正常工作(我用$_GLOBALS['something']
打印整个print_r
)和所有内容在那里。
我遇到的问题是当程序从这个函数返回时我试图将数组放在另一个变量中
$var = $_GLOBALS['something'];
在这种情况下, $ var在打印上不包含任何内容(甚至不为空),count($var)
返回0
。
我在这里缺少什么?
谢谢!
编辑:
function getAndWriteToGlobals($hostname,$community,$oidIndex, $oidValue) {
$indexes = snmprealwalk($hostname, $community, $oidIndex);
$values = snmprealwalk($hostname, $community, $oidValue);
if (empty($indexes)) {
print "Empty indexes array!\n";
}
else{
$c=0;
$a = array();
foreach($indexes as $key => $indxVal){
if (strpos($indxVal,'word') !== false) {
preg_match("/[0-9]+$/", $key, $matches);
$ind = $matches[0];
$a[$c] = $ind;
$c++;
}
}
$i=0;
foreach($values as $key => $value){
if (strpos($key, $a[$i]) !== false) {
preg_match("/[\+\-0-9]+$/", $value, $matches);
$value = $matches[0];
$_GLOBALS['something'][$a[$i]] = $value;
$i++;
}
}
答案 0 :(得分:0)
$_GLOBALS
或$GLOBALS
?
顺便说一句,如果您尝试创建全局变量,请确保语法:
// in somewhere (i think very first of master include file)
global $_GLOBALS;
$_GLOBALS['foo'] = 123;
// more code...
// and in function(s)
function getAndWriteToGlobals(...
global $_GLOBALS;
// do stuff with $_GLOBALS
PS:我不建议将变量命名为类似PHP结构的样式。我更喜欢将$_globals
或$globals
等变量命名为$GLOBALS['globals']
,$GLOBALS['cfg']
等。