0

假设我有一个在启动时执行类似操作的代码:

if (!isset($_GLOBALS['something'])){
    getAndWriteToGlobals($x, $y)
}

这显然可以getAndWriteToGlobals正常工作,它只做很少的事情并将另一个数据放入$_GLOBALS['something'][$ee] = $value ->其中正常工作(我打印了整个$_GLOBALS['something']),print_r并且一切都在那里。

我遇到的问题是当程序从这个函数返回时,我尝试在另一个变量中获取数组,像这样

$var = $_GLOBALS['something'];

在这种情况下, $var 在 printup 中不包含任何内容(甚至不包含 null),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++;

        }   
    }
4

1 回答 1

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'])。

于 2013-01-19T14:37:34.457 回答