Php 未传递对象会话

Php 未传递对象会话,php,session,object,Php,Session,Object,在文件A.php中,我有一个while循环,它从数据库中提取数据并连接到class.php,为每个数据集创建对象。那部分很好用。 在该循环中,我尝试将每个对象保存到由其id值定义的会话中 创建新对象后 文件A.php: $_SESSION[$pObject->id] = $pObject; if (isset($_SESSION[$pObject->id])) { echo "SESSION $pObject->id is set"; } 我已经确认它正在创建中 现

在文件A.php中,我有一个while循环,它从数据库中提取数据并连接到class.php,为每个数据集创建对象。那部分很好用。
在该循环中,我尝试将每个对象保存到由其id值定义的会话中 创建新对象后

文件A.php:

$_SESSION[$pObject->id] = $pObject;

if (isset($_SESSION[$pObject->id]))

{

echo "SESSION $pObject->id is set"; 

}
我已经确认它正在创建中

现在,我有了一个表单,它通过一个GET to文件B.php发送一个Objects id值,我确认该值已被接收

文件B.php:

require_once 'class.php';

session_start();

$id = $_GET['id'];

echo $id;

//Now $id is in my new file, so I try to call my SESSION

if(isset($_SESSION[$id]))

{

echo "SESSION $id is set";

$pObjectCurrrent = $_SESSION[$id];

}

else{

echo "SESSION $id is Not set";

}

问题是,尽管B.php文件中的
$id
等于A.php文件中的
$pObject->id
值,但B.php文件中的
会话[$id]
未设置且没有值。相反,我收到一个未定义的变量错误。任何想法都将不胜感激。

您不能使用整数作为会话变量名

您可以如下设置会话变量:

$_SESSION['obj' . $pObject->id] = $pObject;
echo $_SESSION['obj' . $id];
然后从B.php中检索它,如下所示:

$_SESSION['obj' . $pObject->id] = $pObject;
echo $_SESSION['obj' . $id];
本质上,它将ID与字符串连接起来,因此变量名将是“obj5”、“obj2”等


另外,如果您在会话对象中传递大量数据,我建议您研究序列化和其他替代方法,如将会话数据存储到DB。

您不能使用整数作为会话变量名

您可以如下设置会话变量:

$_SESSION['obj' . $pObject->id] = $pObject;
echo $_SESSION['obj' . $id];
然后从B.php中检索它,如下所示:

$_SESSION['obj' . $pObject->id] = $pObject;
echo $_SESSION['obj' . $id];
本质上,它将ID与字符串连接起来,因此变量名将是“obj5”、“obj2”等


另外-如果您在会话对象中传递大量数据,我建议您研究序列化和其他替代方法,如将会话数据存储到DB。

您确定您也在文件a中调用了
session\u start()
?文件a.php“包含”在main.php中,该main.php具有session\u start()
var\u dump($\u session)
查看其中的实际内容,以及
$id
是否与
$pObject->id
相同。文件A中的var_dump($SESSION[$pObject->id]确认pObject的id等于文件B中的$id,但是文件B中的var_dump($u SESSION[$id])导致“NULL”是否在include之前而不是之后调用session\u start?是否确定也在文件a中调用
session\u start()
?文件a.php“包含”在main.php中,该main.php具有session\u start()
var\u转储($\u session)
要查看其中的实际内容,以及
$id
是否真的与
$pObject->id
相同。文件A中的var_dump($SESSION[$pObject->id]确认pObject的id等于文件B中的$id,但是文件B中的var_dump($\u SESSION[$id])会导致“NULL”出现,会话_在include之前而不是之后被调用吗?