<?php 
session_start();$shop = $_SESSION['shop'];
if(!$shop)
{
$shop = array();
}if($_POST['Submit'])
{
$good_id = $_POST['good_id'];
$good_num = $_POST['good_num'];

$arr = array('good_id'=>$good_id,'good_num'=>$good_num);
if($shop){
   foreach($shop as $key => $val){
if($good_id==$val['good_id']){
$id = $val['good_id'];
$num = $val['good_num'];
$totalNum = $num + $good_num;
$arr = array('good_id'=>$id,'good_num'=>$totalNum);
array_push($shop, $arr);
unset($val);
}else{
array_push($shop, $arr);
}
       }
}else{
array_push($shop, $arr);
}
}$_SESSION['shop'] = $shop;
var_dump($shop);?>
<form name="Form1" method="post" action="">
    <input type="text" name="good_id">
    <input type="text" name="good_num">
    <input type="submit" name="Submit" value="提交">
</form>
我写的一个东东,前两次提交,输出都是正常的,但是第三次以及以后提交提示错误,错误代码是
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 43 bytes) in F:\AppServ\www\test\Cart.php on line 24

解决方案 »

  1.   

    unset($val); 
    改成
    unset($shop[$key]);
    break;
      

  2.   

    完了以后session_destory一下试试
      

  3.   

    发帖请注意格式。、、、
    帮你精简了一下,,,你试试<?php 
    session_start();$shop = $_SESSION['shop'];
    if(!$shop)
    {
    $shop = array();
    }if($_POST['Submit'])
    {
      
    if($shop)
    {
    foreach($shop as $key => $val)
    {
    if($_POST['good_id']==$val['good_id'])
    {
    $shop[$_POST['good_id']]=$val['good_num']+$_POST['good_num'];
    }
    else
    {
    $shop[$_POST['good_id']]=$_POST['good_num'];
    }
    }
    }
    else
    {
    $shop[$_POST['good_id']]=$_POST['good_num'];
    }
    }$_SESSION['shop'] = $shop;
    var_dump($shop);?>
    <form name="Form1" method="post" action="">
      <input type="text" name="good_id">
      <input type="text" name="good_num">
      <input type="submit" name="Submit" value="提交">
    </form>