PHP会话变量在其他变量上使用时丢失

PHP会话变量在其他变量上使用时丢失,php,variables,session,Php,Variables,Session,我有一个PHP脚本,它启动一个会话并创建它的变量。下面是代码片段: <?php session_start(); if (!is_array($_SESSION['cart'])) $_SESSION['cart'] = array(); $id = 10; $_SESSION['cart'][$id] = array( 'cod' => 'ABC', 'price' => '80', 'status' => 'active' ); header('Location: h

我有一个PHP脚本,它启动一个会话并创建它的变量。下面是代码片段:

<?php
session_start();
if (!is_array($_SESSION['cart'])) $_SESSION['cart'] = array();
$id = 10;
$_SESSION['cart'][$id] = array( 'cod' => 'ABC', 'price' => '80', 'status' => 'active' );
header('Location: http://www.example.com/checkout.php');
?>
<?php
session_start();
print_r($_SESSION);
?>
这非常有效:用户会话被创建,它的所有变量都被很好地设置,然后用户被重定向到QueCheckout页面

但有一个问题:当用户到达que结帐页面时,一切看起来都很好。请参阅代码片段:

<?php
session_start();
if (!is_array($_SESSION['cart'])) $_SESSION['cart'] = array();
$id = 10;
$_SESSION['cart'][$id] = array( 'cod' => 'ABC', 'price' => '80', 'status' => 'active' );
header('Location: http://www.example.com/checkout.php');
?>
<?php
session_start();
print_r($_SESSION);
?>
事实上,如果我只是输出变量值,而不在脚本中使用它们,那么一切都正常。但是,当我在脚本的某个地方使用变量时(即使在放入print\r片段之后),会话变量丢失了一些数据

我试图序列化
$\u SESSION['cart']
变量,但是每次我想要获取它的值时都取消序列化是非常烦人的


有人能帮我吗?

我认为在处理foreach中的“此处执行”部分时出现问题,您可以在处理时检查:

foreach ($cart as $key => $data)
{
if(is_array($data)){}
}

您是否有机会打开
register\u globals
?这也许可以解释一些奇怪的覆盖。。。如果有,请禁用它并再次测试。是!你说得对!经过8个小时的努力,我总能从你那里得到答案@Wrikken!谢谢!
foreach ($cart as $key => $data)
{
if(is_array($data)){}
}