我想在用户选择'删除'时从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"
答案 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;]变量,那么它将保留列出的所有产品。可以把它想象成一个多维数组。