从PHP会话中删除一个变量

时间:2016-07-26 11:52:15

标签: php

我想在用户选择'删除'时从PHP会话数组中删除变量。

但是当我取消设置时,数组中的所有变量都将被删除。

如何删除一个变量?

    <?php

session_start();

if (!array_key_exists('products', $_SESSION) || !is_array($_SESSION['products'])) {
    $_SESSION['products'] = [];
}

$productName = array_key_exists('productName', $_POST) ? (string) $_POST['productName'] : '';

if(isset($_GET['delparam'])){
   unset($_SESSION['products'][$productName]);
}
if(isset($_GET['addparam'])){
    $_SESSION['products'][$productName] = $productName;
}
?>

  <?php foreach ($_SESSION['products'] as $product): ?>
    <div class="echo-product"><?php echo htmlspecialchars($product); ?>
     <button type="submit" class="delete-product" value="Remove" >[x]</button>
    </div>
  <?php endforeach;?>

我的代码与我在此网站上发现的其他帖子略有不同。但我真的需要帮助这个代码...

更新

$('.add-product').click(function() {
    var productName = $(this).data('product');
        $.post('http://examp.nl/reload.php?addparam', {productName: productName}, function(data) {
            $('.echo').html(data);
    })
});

$('.delete-product').click(function() {
    var productName = $(this).data('product');
        $.post('http://examp.nl/reload.php?delparam', {productName: productName}, function(data) {
            $('.echo').html(data);
    })
});

更新 如果我使用以下转储 var_dump((unset) $productName); var_dump($productName);

我得到了这个输出。也许它有帮助...... NULL string(6) "Item Z"

2 个答案:

答案 0 :(得分:1)

创建会话时使用

$_SESSION['user']=array();

数组包含完整数据,作为具有键和值组合的多个值 然后删除如下:

unset($_SESSION['user']['index_name']);

答案 1 :(得分:0)

一个替代方案是定义一个布尔产品选项&#39;变量,0 =删除,1 =添加,然后你的.delete-product会看起来像这样:

$('.delete-product').click(function() {
var productName = $(this).data('product');
var option = 0; 
    $.post('http://examp.nl/reload.php?delparam', {productName: productName, productOption: option}, function(data) {
        $('.echo').html(data);
})

然后在reload.php脚本中,验证是否设置了变量,然后取消设置您所追求的特定会话变量。

我还没有尝试过此代码,但请尝试一下,让我知道它是否有效;

修改

如果您定义了$ _session [&#39;产品&#39;]变量,那么它将保留列出的所有产品。可以把它想象成一个多维数组。