【问题标题】:Store , Show and Delete items in session array在会话数组中存储、显示和删除项目
【发布时间】:2017-12-21 00:15:31
【问题描述】:

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

请任何人帮助我解决这个问题

【问题讨论】:

  • @mickmackusa 我有一个正在保存的新文件,当打印 var_dump 时它显示项目数组,但当我需要获取一个项目时它不能。请问我可以再次更新我的问题,让你看看吗?
  • @mickmackusa 请查看我的问题的当前版本
  • @mickmackusa 我已经修复它现在正在工作,问题来自$_SESSION["items"][$itemID][],但我仍然发现了另一个问题。当我尝试回显 $_SESSION["items"]['C']['code'] 时,它只会打印 3 而不是 300
  • @mickmackusa 喜欢这个array ( 'A' =&gt; array ( 'code' =&gt; '100'), 'B' =&gt; array ( 'code' =&gt; '200', ), 'C' =&gt; array ( 'code' =&gt; '300', ) )

标签: php arrays session post


【解决方案1】:

示例代码:

$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 内部。

【讨论】:

    【解决方案2】:

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

    因此,您的会话中只有一项或包含一项或无项的数组。

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

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

    【讨论】:

    • 请用我尝试使用但仍无法正常工作的另一个代码更新我的问题
    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2011-04-02
    相关资源
    最近更新 更多