会话数组在服务器上被区别对待/覆盖,但在本地XAMPP上没有

时间:2012-04-27 21:01:20

标签: php session

我有一个在会话中存储数组的站点。 项目被添加到数组中,并且循环数组以显示项目。

在我当地的XAMPP上工作正常,但现在我上传了它,它显示出一些奇怪的行为。

我的数组应如下所示:

Array
(
    [bag] => Array
        (
            [0] => Array
                (
                    [item_id] => 4
                    [stock_id] => 7
                    [quant] => 1
                )
         )
)

在我添加一个项目后,它只需点击几下就会转到:

Array
(
    [bag] => 1
)

错误:

Warning: Invalid argument supplied for foreach() in /public_html/xxx.php on line xx

是否有一些会话设置我应该注意php .ini配置或类似的东西? (如果有帮助,我正在使用Hostgator)


我正在向数组添加项目的简化方法 -

function AddBag()
{
//get info
    $item_id   = $_POST['item_id'];
    $quant      = $_POST['quant];
    $stock_id  = $_POST['stock_id];

    if (isset($_SESSION['bag'])) {$bag_array = $_SESSION['bag'];}
    else                         {$bag_array = array();}

//add item into array
    $new_item = array("item_id" => $item_id, "stock_id" => $stock_id, "quant" =>         $quant);
    array_push($bag_array, $new_item);

//update session with new array
    $_SESSION['bag'] = $bag_array;
}

1 个答案:

答案 0 :(得分:0)

想想我自己找到了答案 -

我有一个像这样的foreach循环:

foreach ($_SESSION['bag'] as $bag) {$bag_num = $bag_num + $bag['quant'];

这在我当地的XAMPP上进行了很好的测试,但在我的托管上却没有它。 将其更改为:

foreach ($_SESSION['bag'] as $bagx) {$bag_num = $bag_num + $bagx['quant'];

似乎有效。

我可以看到为什么会出现冲突而不是为什么它会在一个或另一个上发挥作用,是什么想法?