为foreach()提供的购物车$ _SESSION ['cart']参数无效

时间:2014-12-18 17:54:16

标签: php session

if (isset($_GET['addCart'])&& is_numeric($_GET['addCart']))
    {
        $item = $_GET['addCart'];

        $_SESSION ['cart'][$item] = $item;
        echo "<h3 class=change> Item ".$item." has been added to cart.</h3>";


        foreach($_SESSION['cart'] as $myItem)
            {

                echo "<br>item: ".$myItem."<br>";
            }

    }

我无法在购物车中显示这些商品。 当我运行此代码时,我得到一个警告:为foreach()提供的参数无效。

修改 但是,这很好用:

$_SESSION['shoppingCart'] = array();
$_SESSION['shoppingCart']['1'] = 2;
$_SESSION['shoppingCart']['2'] = 3;

//get all items
foreach($_SESSION['shoppingCart'] as $item)
{
    echo"<br>contents of shoppingcart ".$item."<br>";
}

修改

会话已启动。 我认为这与这一行有关:

$_SESSION ['cart'][$item] = $item;

我尝试了这两个,它不起作用:

`$_SESSION ['cart']['$item'] = $item`; 
`$_SESSION ['cart'][] = $item`;
第一个错误

错误:警告:非法字符串偏移&#39; $ item&#39;

第二个错误:致命错误:字符串不支持[]运算符

4 个答案:

答案 0 :(得分:0)

foreach用于键控数组。如果$_SESSION['cart']不是键控数组,请改用for循环。

for ($i=0;$i<count($_SESSION['cart']);$i++){

echo "$_SESSION['cart'][$i]";

}

答案 1 :(得分:0)

嗯,这取决于您的购物车商品如何存储在$ _SESSION [&#39;购物车&#39;] 如果$ _SESSION [&#39; cart&#39;]包含一系列项目,您应该执行以下操作:

$items = $_SESSION['cart'];

for($i=0; $i<count($items); $i++)
{
echo $items[$i].'<br />';
}

答案 2 :(得分:0)

您的代码适用于我。

请检查您的php会话配置是否正常。使用phpinfo()并检查session.*配置,查找session.save_path - 检查您是否有此导演,并且您的网络服务器可以在那里写。

还尝试将session_start();放在脚本的开头。

答案 3 :(得分:0)

您应该尝试初始化会话的购物车索引

if(!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = array();
}   

在您尝试向其添加项目之前。另外,请务必使用session_start()函数

开始会话