我正在尝试将已注册的产品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" } }
请任何人协助我如何做到这一点
答案 0 :(得分:0)
如果会话中没有项目,请将其保存在$ _SESSION ['项目']中。当其中有一个项目时,您创建一个新数组来保存它,并删除旧值,并将新项目保存在新数组中。
因此,会话中只有一个项目或数组包含一个项目或没有项目。
只需将if eles语句替换为此语句,以避免在分配的结束时添加@
的警告,或者在分配之前测试它是否设置。
$_SESSION["items"][] = $_POST['product_id'];
答案 1 :(得分:0)
示例代码:
$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
内,items
位于$_SESSION
内。{/ p>