我正在尝试将数组存储在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...
我错过了什么?
答案 0 :(得分:1)
为什么不使用本机php $_SESSION
来存储会话数据:
$_SESSION['that'] = 'this';
echo $_SESSION['that']; //echoes `this`
同样通过这样做:$GLOBALS['session_data'] = $session_data;
你设置的值等于它自己(隐含的),除非$session_data
在函数内部。
答案 1 :(得分:0)
大多数情况下,您必须将数据传递到另一个文件,方法与将其传递到当前文件的方式相同。
因此,如果您对file_1.php使用GET,则很可能需要将相同的参数传递给file_2.php。
这种方式更常见,与使用非常有限的会话不同。
答案 2 :(得分:-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'];