删除SESSION阵列错误中的阵列[0]

时间:2018-12-12 09:22:29

标签: php session

作为一个新手,我正在努力一个小项目。 我正在一个小型MTB俱乐部中整理一个有关内部订单的页面。我的问题是,如果$ _SESSION ['cart']中有多个订单,而我尝试删除第一个[0],则得到“未定义的偏移量:0”。 我知道这与删除第一个条目有关,因此在列出阵列时找不到该条目。我只是看不出我是怎么解决的,我用谷歌搜索并尝试了不同的解决方案,但没有结果。 请给我一些建议,以帮助我前进。 下面的代码仅用于此目的

enter code here    <?php
session_start(); 
 if(isset($_POST['submit'])){
$total = $_POST['Amount'] * $_POST['Price'];
$cart=array(
'Amount'=>$_POST['Amount'], //Amoun ordered of clothes
'Size'=>$_POST['Size'], //Size of clothes
'Price'=>$_POST['Price'], //Price of clothes
'Product_id'=>$_POST['Product_id'],//Id of clothes for DB
'Product_Name'=>$_POST['Product_Name'], //Name of clothes
'Product_Total'=>$total //Total price    
);      
$_SESSION['cart'][]=$cart;  
}
if(isset($_GET['Reset'])){
unset($_SESSION['cart']);
header('location:demo.php');
}
if(isset($_GET['remove'])){
$do = $_GET['do'];      
unset($_SESSION['cart'][$do]);
 //Redirecting After Unset SESSION
  header('location:demo.php');
  }
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Session Demo/Test</title>
</head>
<body>
<table width="590" border="4" cellspacing="0" cellpadding="5" align="center" >
  <tbody>
    <tr>
      <td width="373">Name of clothes</td>
      <td width="185">
<a href="?Reset">Reset Session</a></td>
    </tr>
  </tbody>
</table>
<form method="POST">
    <table width="590" border="4" cellspacing="0" cellpadding="5" align="center">
  <tbody>
    <tr>
      <td colspan="4" rowspan="5" align="center"><img src="images/Bike_Jersy_short.jpg" width="200" height="200" alt=""/></td>   
      <td height="120" colspan="2"> 
        Clothes description
    </td>
      </tr>
    <tr>
      <td width="112">Price:</td>
      <td>300,00 Kr.</td>
    </tr>
    <tr>  
      <td width="112">Amount:</td>
      <td width="116">
            <input name="Amount" type="number" id="Amount" tabindex="1" value="" size="1" required >
        </td>
    </tr>
    <tr>  
      <td>Size:</td>
      <td>
              <select name="Size"  id="Size" tabindex="2" required>
       <option value=""></option>
          <option value="XS">XS</option>
          <option value="S">S</option>
          <option value="L">L</option>
          <option value="XL">XL</option>
          <option value="2XL">2XL</option>
          <option value="3XL">3XL</option>
          <option value="4XL">4XL</option>
          <option value="5XL">5XL</option>
          <option value="6XL">6XL</option>
        </select>
        </td>
    </tr>
         <tr>  
      <td>Add:</td>
      <td>
         <input type="submit" name="submit" id="submit" value="Add">
           <input name="Price" type="hidden" id="Price" value="300">
        <input name="Product_id" type="hidden" id="Product_id" value="1">
          <input name="Product_Name" type="hidden" id="Product_Name" value="Name of clothes">        
           </td>
    </tr>
  </tbody>
</table>
       </form>      
<p></p>
    <?php
    if(empty($_SESSION['cart'])){ 
        ?>
    <table width="898" border="4" cellspacing="0" cellpadding="5" align="center">
  <tbody>
    <tr>
        <td>You have no items in yet </td>
    </tr>
  </tbody>
</table>
    <?php
    }
    else{
        ?>
    <table width="900" border="4" cellspacing="0" cellpadding="5" align="center">
  <tbody>
    <tr>
      <td width="109">Name</td>
      <td width="31">Amount</td>
      <td width="33">Size.</td>
      <td width="63">Price</td>
      <td width="55">Total</td>
      <td width="45">Remove</td>
    </tr>     
      <?php for($i = 0 ; $i < count($_SESSION['cart']) ; $i++) {
      ?>      
    <tr>
      <td><?php echo $_SESSION['cart'][$i]['Product_Name'];?></td>
      <td><?php echo $_SESSION['cart'][$i]['Amount'];?>
      </td>
      <td><?php echo $_SESSION['cart'][$i]['Size'];?></td>
      <td><?php echo $_SESSION['cart'][$i]['Price'];?></td>
      <td><?php echo $_SESSION['cart'][$i]['Product_Total'];?></td>
      <td><a href="demo.php?remove=remove&do=<?php echo $i;?>" title="Remove">Remove</a>            
          <?php
          }
            ?>
      </td>
    </tr>     
    <?php }  ?>   
  </tbody>
</table>                
</body>
</html>

1 个答案:

答案 0 :(得分:1)

使用array_shift()功能。

像这样:

$value = array_shift($_SESSION['cart']);

这将删除数组中的第一个元素,无论当前索引如何。 $value是已删除元素的值。