Php 删除会话数组中的数组[0]时出错

Php 删除会话数组中的数组[0]时出错,php,session,Php,Session,作为这方面的新手,我正在努力完成一个小项目。 我正在为一家小型MTB俱乐部的内部订单整理一页。我的问题是,如果在$u会话['cart']中有超过1个订单,并且我尝试删除第一个订单[0],那么我会得到“未定义的偏移量:0”。 我明白了,这是因为我删除了第一个条目,因此在它列出数组时找不到它。我就是看不出我是如何解决的,我在谷歌上搜索并尝试了不同的解决方案,但都没有结果。 请为我提供如何前进的建议。。 以下代码仅用于此目的 enter code here <?php session_st

作为这方面的新手,我正在努力完成一个小项目。 我正在为一家小型MTB俱乐部的内部订单整理一页。我的问题是,如果在$u会话['cart']中有超过1个订单,并且我尝试删除第一个订单[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>
使用该函数

像这样:

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

这将删除数组中的第一个元素,而不考虑当前索引$value是已删除元素的值。

您可以使用其中一种解决方案这将解决您的问题。它还将修改所有数字键,使其再次从零开始。