1

我正在尝试将数组存储在 PHP GLOBAL 中,如下所示:

// 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

大多数情况下,您必须将数据传递到另一个文件,就像将数据传递到当前文件一样。

因此,如果您对 file_1.php 使用 GET,您很可能需要将相同的参数传递给 file_2.php。

这是一种更常见的方式,与使用非常有限的会话不同。

于 2011-12-08T19:38:48.997 回答
-1

另一个文件没有看到“session_data”变量。使用这样的全局变量也是非常危险的,这就是为什么 PHP 从 PHP 5.4 开始将其完全从其语言中删除并在 PHP 5.3 中弃用的原因。

如上所述,您应该使用 $_SESSION 变量将信息从一个文件传递到另一个文件。

你可以这样做:

# 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 回答