将项添加到数组PHP

时间:2009-10-16 07:08:46

标签: php session

我正在为学校作业建立一个购物车。除了将项目添加到cart变量之外,我几乎都在那里。

我已经设置了我的购物车会话:$_SESSION['temp_session'] = array();

然后,当项目添加到购物车时,执行此代码

if (isset($_POST['addtocart'])) {
            $item_name = $_POST['item_name'];
            $price = $_POST['price'];
            $qty = $_POST['qty'];

            $newItem = $item_name.":".$price.":".$qty;
            //echo $newItem;

            if (isset($_SESSION['shop_session'])) {
                array_push($shop_session, $newItem);
                //header('Location: cart.php');
                print_r($shop_session);
            }
            else {
                array_push($temp_session, $newItem);
                //header('Location: login.php?notLoggedIn=true');
                print_r($temp_session);
            }
        }

似乎工作正常(我可以打印$newItem并且它包含元素)但是当我尝试将$newItem添加到$shop_session或{{1}时然后将它们打印出来,那里的数组是空的。

这与我使用$temp_session的方式有关吗?

由于

2 个答案:

答案 0 :(得分:4)

您的RegisterGlobals是否已开启?如果不是,你必须使用

            if (isset($_SESSION['shop_session'])) {
                    array_push($_SESSION['shop_session'], $newItem);
                    //header('Location: cart.php');
                    print_r($_SESSION);
            }
            else {
                array_push($_SESSION['temp_session'], $newItem);
                    //header('Location: login.php?notLoggedIn=true');
                    print_r($_SESSION);
            }

答案 1 :(得分:3)

您无法输入

$_SESSION['temp_session'] = array();

并期望有一个名为$ temp_session的变量。你所拥有的只是一个数组($ _SESSION),它包含一个元素(键名为temp_session),它也是一个数组。

为了获得所需的结果,您需要一个额外的行,例如:

$temp_session = $_SESSION['temp_session'];

当你更新它时,再次回到你的会话中:

$_SESSION['temp_session'] = $temp_session;