Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中从会话数组中删除购物车项目_Php_Arrays_Session - Fatal编程技术网

在php中从会话数组中删除购物车项目

在php中从会话数组中删除购物车项目,php,arrays,session,Php,Arrays,Session,我已经创建了一个会话数组,用于将项目放入具有不同属性的购物车中。每个项目都有一个删除按钮,仅删除该项目 用于创建我使用的会话 session_start(); if (isset($_POST['submit'])) { $front = $_POST['front_select']; $back = $_POST['back_select']; $side = $_POST['side_select']; $oid = $_POST['orderID'];

我已经创建了一个会话数组,用于将项目放入具有不同属性的购物车中。每个项目都有一个删除按钮,仅删除该项目

用于创建我使用的会话

session_start();
if (isset($_POST['submit']))
{
    $front = $_POST['front_select'];
    $back = $_POST['back_select'];
    $side = $_POST['side_select'];
    $oid = $_POST['orderID'];
    $pid = $_POST['pid'];
    $cart = array (
    'oid' => $oid,
    'front' => $front,
    'back' => $back,
    'pid' => $pid,
    'side' => $side

    );


    $_SESSION['cart'][] = $cart;

    print_r($_SESSION['cart']);
}
用于显示阵列

 if(isset($_SESSION['cart'])){
                     $i = 0;
                        foreach ($_SESSION['cart'] as $item) {
                    if(isset($item['oid']) ){
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
                            <?php echo $i;?>
                            <h5>ORDER ID : <b id="oid">#<?php echo   $item['oid'];  ?></b> | ORDER TYPE : <b id="product_type">BLOUSE</b> | PRODUCT ID :  <b id="product_id"><?php echo $item['pid']; ?></b></h5>
                            <hr>
                        </div>
 <a id="remove_btn" href="removefromcart.php?id=<?php echo $i; ?>" class="btn btn-danger waves-effect waves-light">Remove</a>

}
}
}
得到

Array ( [0] => Array ( [oid] => IT574deb7ddbfe3 [front] => IT1_front_6 [back] => IT1_back_2 [pid] => IT1 [side] => IT1_side_7 ) [IT574ded04c8af2] => Array ( [oid] => IT574ded04c8af2 [front] => IT1_front_6 [back] => IT1_back_3 [pid] => IT1 [side] => IT1_side_2 ) )
删除按钮代码

 <div class="row">
                                <a id="remove_btn" href="removefromcart.php?id=<?php echo $item['oid']; ?>" class="btn btn-danger waves-effect waves-light">Remove</a>
                            </div>


数组的第一个键是0,这给我带来了一个问题。在我的购物车中,第一个项目始终保留,尽管其删除按钮url id具有不同的id。

您的删除操作无效,因为您在构建购物车时没有使用该$id作为索引:

$_SESSION['cart'][] = $cart;
                  ^--generate new ID based on current length of array
因此,如果您的数组中有3个项目,并添加另一个项目,那么它的新索引将是
3
,即使它的$id恰好是9999或其他什么

您需要在任何地方使用该$id作为索引:

$_SESSION['cart'][$id] = $cart;
                  ^^^---

然后您的
unset()
将按预期工作。

您的删除不起作用,因为您在构建购物车时没有使用该$id作为索引:

$_SESSION['cart'][] = $cart;
                  ^--generate new ID based on current length of array
因此,如果您的数组中有3个项目,并添加另一个项目,那么它的新索引将是
3
,即使它的$id恰好是9999或其他什么

您需要在任何地方使用该$id作为索引:

$_SESSION['cart'][$id] = $cart;
                  ^^^---

然后您的
unset()
将按预期工作。

简而言之…=>很抱歉,您没有收到您的“用于显示数组”的代码不正确地混合了PHP和HTML。@PatrickQ:这到底是什么问题?php是模板引擎。如果您想知道如何在不混合代码的情况下输出动态HTML,您可以运行world,不要说“使用模板”引擎,因为这只会将其变成“不要将模板代码与HTML混合”,然后您就回到了原点。@MarcB umm。。。什么??这不是OP将两者混为一谈的事实,而是它的运作方式。简言之,我假设前4行已经在一个开放的
中…=>很抱歉,您没有收到您的“用于显示数组”的代码不正确地混合了PHP和HTML。@PatrickQ:这到底是什么问题?php是模板引擎。如果您想知道如何在不混合代码的情况下输出动态HTML,您可以运行world,不要说“使用模板”引擎,因为这只会将其变成“不要将模板代码与HTML混合”,然后您就回到了原点。@MarcB umm。。。什么??这不是OP将两者混为一谈的事实,而是它的运作方式。我假设前4行已经在一个打开的
中,请告诉我如何操作?您好,先生,谢谢您的回答。这对我帮助很大,但我得到的数组的第一个值键为0,其余为我定义的值。我已更新了我的问题,请查看。请告诉我如何操作?您好,先生,谢谢您的回答对我帮助很大,但我得到的数组的第一个值键为0,其余为我定义的值。我已经更新了我的问题,请参阅。