首先要建议你最好不要用current($item);
用each()要好点.

解决方案 »

  1.   

    <?
    Class Cart {
    function add($item){
    $key = current($item);
    $_SESSION['cart'][$key]['ID'] = $key; //*****
    }
    }session_start();$cart = new Cart;
    $ts4 = array(ID=>"34",name=>"产品4",price=>273,count=>1);
    $item = array("20","产品0",323,1);
    $cart->add($ts4);
    $cart->add($item);?>
    *****这里不能对$_SESSION赋值,因为在session未打开时$_SESSION被视为普通变量,而在session未打开时有是特殊的环境变量了。因此造成定义冲突。按你的思路,你是通过session保存购物车信息的。所以你应该直接保存购物车对象
    <?
    Class Cart {
    var $cart;
    function add($item){
    $key = current($item);
    $this->cart[$key]['ID'] = $key; //*****
    }
    }session_start();
    if(! isset($_SESSION['cart'])) {
    $_SESSION['cart'] = new Cart;
    }
    $cart =& $_SESSION['cart'];
    $ts4 = array(ID=>"34",name=>"产品4",price=>273,count=>1);
    $item = array("20","产品0",323,1);
    $cart->add($ts4);
    $cart->add($item);
    ?>
    这样虽然还是用session保存数据,但类中并不需要向session保存数据的代码
      

  2.   

    感谢楼上的回答,那为什么这篇文章中可以呢?http://community.csdn.net/Expert/topic/3291/3291281.xml?temp=.8605158
      

  3.   

    多谢唠叨大哥,偶已经重新好了放在http://blog.csdn.net/pwtitle/archive/2004/08/20/80387.aspx