用in_array()来判断名称是否在数组中,如果有就在数量上加1,如果没有就添加新的。

解决方案 »

  1.   

    问题一: kingerq(多菜鸟) 已经说了
    问题二:session不是相当于共享内存区么?干吗要进行传递,在另一个页面使用session_start();后,应该也能够获取session吧,通过foreach就可以全部读出
      

  2.   

    能不能说具体些,怎么用foreach读这些session?
      

  3.   

    1、你的程序思路有问题,建议重写
    2、以你现在的程序
    $_SESSION['user'][$i]['name'] //商品名
    $_SESSION['user'][$i]['pricer'] //单价
    $_SESSION['user'][$i]['num'] //数量
    任何操作都需要遍历$_SESSION['user']数组,以定位到指定位置。太烦琐了
    3、按你的数据组织,无法用in_array()来判断名称是否在数组中
    4、建议修改数据结构为
    $ware[商品名] = array('pricer' => 单价, 'num' => 数量);
    处理时可以这样,假定商品名$namr=$_GET['name']
    增加品种或数量:
    if(isset($ware[$name]))
      $ware[$name]['num']++;
    else
      $ware[$name]['num'] = 1;减少品种或数量:
    if(isset($ware[$name])) {
      $ware[$name]['num']--;
      if($ware[$name]['num'] == 0)
        unset($ware[$name]);
    }合计金额
    foreach($ware as $v) {
      $num += $v['num'];
      $total += $v['num']*$v['pricer'];
    }
    echo "件数:$num 金额:$total";从session中读取时
    $ware =& $_SESSION['ware'];
    这样可不必显式的写回session保存到session
    $_SESSION['ware'] = $ware;定义成类的属性会更清晰一点