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

Php 在会话数组中存储、显示和删除项目,php,arrays,session,post,Php,Arrays,Session,Post,我试图将注册的产品id会话保存在数组中,并使用该id从会话数组中删除任何产品,但它只保存一个,并在发布新产品时替换它。我已经在网上搜索过了,但仍然找不到可以帮助我解决这个问题的方法 <?php session_start(); //Saving session if(!empty($_SESSION["items"])){ $_SESSION["items"] = array(); $_SESSION["items"][] = $_POST['product_id']; }else{ $

我试图将注册的产品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" } } 

数组(3){[“A”]=>数组(1){[0]=>字符串(3)“100”}[“B”]=>数组(1){[0]=>字符串(3)“200”}[“C”]=>数组(1){[0]=>字符串(3)“300”}

如果您的会话中没有项目,请将其保存在$\u会话['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\u id
将有一个
code
键。该子数组将位于
$itemID
内,该子数组将位于
项目内
将位于
$\u会话内

请使用另一个我尝试使用但仍未使用的代码更新我的问题working@mickmackusa我有一个新的正在保存,当打印var_dump时,它会显示项目数组,但当我需要买一件东西。请允许我再次更新我的问题以便您查看它吗?@mickmackusa请查看我的问题的当前版本question@mickmackusa我已经修复了它现在正在工作,问题来自于
$\u会话[“items”][$itemID][
,但我仍然发现了另一个问题。当我尝试回显
$\u SESSION[“items”]['C']['code']
时,它将只打印3而不是3300@mickmackusa@mickmackusa像这样
数组('A'=>数组('code'=>'100'),'B'=>数组('code'=>'200',),'C'=>数组('code'=>'300',)