繁体   English   中英

在会话数组中存储,显示和删除项目

[英]Store , Show and Delete items in session array

我正在尝试将注册的产品ID会话保存在数组中,并使用ID从会话数组中删除任何产品,但是当我发布新产品时,它只能保存一个并替换它。 我已经在网上搜索过,但仍然找不到能帮助我解决此问题的方法。

<?php 
session_start();
//Saving session
if(!empty($_SESSION["items"])){
$_SESSION["items"] = array();
$_SESSION["items"][] = $_POST['product_id'];
}else{
$_SESSION["items"] = $_POST['product_id'];
}

//Get one session
echo $_SESSION["items"][$_POST['product_id']];

//Delete one session
unset($_SESSION["items"][$_POST['product_id']]);
?>

例子2

<?php 
session_start();
$product_id = '300';
$itemID = 'C';
if (!isset($_SESSION['items'])) {
  $_SESSION['items'] = array();
  $_SESSION['items'][$itemID] = array('code' => $product_id);
}else{
    $_SESSION["items"][$itemID][] = $product_id;
}
echo $_SESSION["items"]['A']['code']; // This is not showing anything
var_dump($_SESSION["items"]); // below array is what i get
?>

array(3) { ["A"]=> array(1) { [0]=> string(3) "100" } ["B"]=> array(1) { [0]=> string(3) "200" } ["C"]=> array(1) { [0]=> string(3) "300" } } 

请任何人可以协助我解决这个问题

如果会话中没有项目,则将其保存在$ _SESSION ['items']中。 当其中有一项时,您可以创建一个新数组来保存它,并删除旧值,然后将新项保存到新数组中。

因此,您的会话中只有一个项目或数组,只有一个项目或没有项目。

只需将if eles语句替换为此,为避免警告,您可以在分配的开始处添加@ ,或测试在分配之前是否设置了@。

$_SESSION["items"][] = $_POST['product_id'];

示例代码:

$product_id = '300';
$itemID = 'C';
if (!isset($_SESSION['items'])) {
    $_SESSION['items']=[];
}
$_SESSION["items"][$itemID]['code']=$product_id;
var_export($_SESSION["items"]);

输出:

array (
  'C' => 
  array (
    'code' => '300',
  ),
)

每个添加的$product_id将具有一个code密钥。 该子数组将在$itemID内,这将在$_SESSION内的items之内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM