如何在PHP中创建二维会话数组


How to Create 2-D session array in PHP

我正在创建具有菜肴细节的餐厅项目。我想实现添加多个菜肴,而无需在数据库中使用会话保存。

我的操作不能正常运行。当我添加新菜时,它会覆盖上一个菜的值并将数组增加1

    <?php
$DBhost = "localhost";
$DBuser = "root";
$DBPassword = "";
$database = "tandoor";
$CS = mysqli_connect($DBhost, $DBuser, $DBPassword, $database);

session_start();
?>
    <?php 
$id = 0;
   if(isset($_POST['qty']))
   {
       $_SESSION['qty'] = $_POST['qty'];
        $sessonID = $_SESSION['id']  =  $id;
   }
   if(isset($_SESSION['qty'])){
       $qty=$_SESSION['qty'];
   }

?>
<?php
$orderinfo['id'] = $sessonID;
$orderinfo['qty'] = $qty;
$_SESSION['orderinfo'][] = $orderinfo;
print_r($_SESSION['orderinfo']);
?>
<?php
if(isset($_GET['did']))
{
    $Did = $_GET['did'];
}
?>
<?php 
$title = "Order details";
?>
<?php
$selectBannerQuery = "select * from banner";
$selectBannerCmd = $CS->query($selectBannerQuery);
?>

<table class="order-table">
                                        <tr>
                                            <th>Item Name</th>
                                            <th>Price</th>
                                            <th>Quantity</th>
                                            <th>Total</th>
                                            <th>Operations</th>                                                
                                        </tr>
                                        <?php
                                        for($i = 0 ; $i< count($_SESSION['orderinfo']); $i++)
                                        {
                                        if (isset($Did))
                                        {
                                        $sessonID = $_SESSION['id']=  $Did;
                                        }
                                         else {
                                             $sessonID = $_SESSION['id'];
                                         }
                                            ?>
                                        <?php
                                           if (isset($sessonID))
                                           {
                                           $selectdishinfoQuery = "select D_id, DishName, price from dishes where D_id= $sessonID";
                                           $selectdishinfoCmd = $CS -> query($selectdishinfoQuery);                                                
                                            while ($selectdishinfo = mysqli_fetch_array($selectdishinfoCmd, MYSQLI_ASSOC)){
                                                $id = $selectdishinfo['D_id'];
                                                $dishName = $selectdishinfo['DishName'];
                                                $dishprice = $selectdishinfo['price'];
                                            ?>
                                        <?php 
                                               if(isset($qty))
                                               {
                                                   $total = $dishprice * $qty;
                                               }

                                            ?>
                                        <tr>
                                            <td><?php if(isset($dishName)){echo ($dishName);}?></td>
                                            <td><?php if(isset($dishprice)){echo ($dishprice);}?></td>
                                            <td><?php if(isset($qty)){echo ($qty);}?></td>
                                            <?php
                                            ?>
                                            <td><?php if(isset($total)){echo ($total);}?></td>
                                            <td><select name="qty" onchange="this.form.submit()">
                                                    <option value="0" <?php if(isset($qty)){  if ($qty == 0 ){echo 'selected';}}?>>0</option>
                                                    <option value="1" <?php if(isset($qty)){  if ($qty == 1 ){echo 'selected';}}?>>1</option>
                                                    <option  value="2" <?php if(isset($qty)){ if ($qty == 2 ){echo 'selected';}}?>>2</option>
                                                    <option value="3" <?php if(isset($qty)){  if ($qty == 3 ){echo 'selected';}}?>>3</option>
                                                    <option value="4" <?php if(isset($qty)){  if ($qty == 4 ){echo 'selected';}}?>>4</option>
                                                    <option value="5" <?php if(isset($qty)){  if ($qty == 5 ){echo 'selected';}}?>>5</option>
                                                    <option value="6" <?php if(isset($qty)){  if ($qty == 6 ){echo 'selected';}}?>>6</option>
                                                    <option value="7" <?php if(isset($qty)){  if ($qty == 7 ){echo 'selected';}}?>>7</option>
                                                    <option value="8" <?php if(isset($qty)){  if ($qty == 8 ){echo 'selected';}}?>>8</option>
                                                    <option value="9" <?php if(isset($qty)){  if ($qty == 9 ){echo 'selected';}}?>>9</option>
                                                    <option value="10" <?php if(isset($qty)){  if ($qty == 10 ){echo 'selected';}}?>>10</option>
                                                    <option value="11" <?php if(isset($qty)){  if ($qty == 11 ){echo 'selected';}}?>>11</option>
                                                    <option value="12" <?php if(isset($qty)){  if ($qty == 12 ){echo 'selected';}}?>>12</option>
                                                    <option value="13" <?php if(isset($qty)){  if  ($qty == 13 ){echo 'selected';}}?>>13</option>
                                                    <option value="14" <?php if(isset($qty)){  if ($qty == 14 ){echo 'selected';}}?>>14</option>
                                                    <option value="15" <?php if(isset($qty)){  if ($qty == 15 ){echo 'selected';}}?>>15</option>
                                                    <option value="16" <?php if(isset($qty)){  if ($qty == 16 ){echo 'selected';}}?>>16</option>
                                                    <option value="17" <?php if(isset($qty)){  if ($qty == 17 ){echo 'selected';}}?>>17</option>
                                                    <option value="18" <?php if(isset($qty)){  if ($qty == 18 ){echo 'selected';}}?>>18</option>
                                                    <option value="19" <?php if(isset($qty)){  if ($qty == 19 ){echo 'selected';}}?>>19</option>
                                                    <option value="20" <?php if(isset($qty)){  if ($qty == 20 ){echo 'selected';}}?>>20</option>                                                        
                                                </select>                                                
                                            </td>                                                
                                        </tr>
                                            <?php } 
                                        }}?>
                                    </table>

Session基本上是一个全局数组你可以在其中设置嵌套数组

你可以创建一个会话$_SESSION("dishes"=>array())

然后每次你得到一个新菜的时候都加上$_SESSION["dishes"][] = $array_of_new_dish

下面的代码是为您更新您的会话购物车相关的逻辑,如果您想添加当前数量与以前的,将以这种方式完成,其他逻辑将与您的工作流一起工作。

  if(isset($_POST['qty'])) 
{ 
$_SESSION['qty'] = !isset($_SESSION['qty'])?$_POST['qty']:$_SESSION['qty']+$_POST['qty']; 
$sessonID = $_SESSION['id'] = $id;
 } 
if(isset($_SESSION['qty']))
{ $qty=$_SESSION['qty']; }