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 に答える