1

次のように、配列をPHPGLOBALに格納しようとしています。

// file_1.php

include 'functions/session_metrics.php';

$project_data = array();
$session_data = array();

if (isset($_GET["product"])) {

    $product = explode("|", $_GET["product"]);

    foreach ($product as $id) {
            list($project, $sessions) = getProductInfo( $id );
            $project_data[$id] = $project;
            $session_data[$id] = $sessions;
    }

    $GLOBALS['project_data'] = $project_data;
    $GLOBALS['session_data'] = $session_data;

}

今、別のファイルから私はそれを次のように廃止しようとしています:

// file_2.php

$data= $GLOBALS['project_data']; 
print_r($data);

しかし、エラーが表示されます。

Undefined Index: project_data...

私は何が欠けていますか?

4

3 に答える 3

1

ネイティブphp$_SESSIONを使用してセッションデータを保存しないのはなぜですか。

$_SESSION['that'] = 'this';

echo $_SESSION['that']; //echoes `this`

また、これを行うことにより、関数内に$GLOBALS['session_data'] = $session_data;ない限り、それ自体と等しい値(暗黙的)を設定します。$session_data

于 2011-12-08T18:50:22.200 に答える
0

ほとんどの場合、current に渡したのと同じ方法でデータを別のファイルに渡す必要があります。

そのため、file_1.php に GET を使用する場合、ほとんどの場合、同じパラメーターを file_2.php に渡す必要があります。

使用が非常に限られているセッションとは異なり、これはより一般的な方法です。

于 2011-12-08T19:38:48.997 に答える
-1

The other file is not seeing the 'session_data' variable. Also it is very risky using globals like that, which is why PHP has completely dropped it out of their language as of PHP 5.4 and have it deprecated in PHP 5.3.

As stated above, you should use the $_SESSION variable to pass info from one file to another.

You can do so by:

# Start the sessions 
session_start();
#Set the session_data
$_SESSION['session_data'] = $sessions;
#retrieve data
$sessions = $_SESSION['session_data'];
于 2011-12-08T19:30:41.840 に答える