【问题标题】:How to add new elements to a $_SESSION array in PHP如何在 PHP 中向 $_SESSION 数组添加新元素
【发布时间】:2013-05-28 00:26:41
【问题描述】:

我正在构建一个购物车,在我的任务中,我必须打印出客户购买的物品。我试图将项目存储在数组$_SESSION['items'] 中,但没有成功。我试过这个:

$_SESSION['items'][] = $item;

但它不起作用。

请给点建议?

【问题讨论】:

  • 这就是你所需要的。这是如何“不起作用”的?数组永远不会被创建?您是否在修改 $_SESSION 的任何地方都正确使用了 session_start()?
  • 你可能只需要在页面的开头执行 session_start() 就可以了
  • 确保您的session_start 出现在任何 HTML 之前,否则它将不起作用。确保您的警告已启用,以便您可以查看会话初始化的任何问题。

标签: php arrays session shopping-cart


【解决方案1】:

你用过session_start()吗?您需要在使用$_SESSION 之前声明session_start(),以便将值保存在会话变量中。

另外你正在使用一个会话数组,所以使用print_r($_SESSION['items'])查看它的输出,为了访问你需要指定索引的数组值,例如

echo $_SESSION['items'][0]

【讨论】:

  • @DilshatAbduwalli 用这个看看你会得到什么print_r($_SESSION['items'])
  • 为什么每个人都错误地说 session_start 的“页面顶部”?
  • 使用前,不是页面顶部,5000万行如果你使用会话直到5000万和1就可以了
  • 当我使用 print_r($_SESSION['items']) 时正在打印 Arry [0] => [1] => [1] ..)
  • @DilshatAbduwalli Ya,所以如果您想回显特定值,请使用该特定索引号/名称,阅读我编辑的答案
【解决方案2】:

使用session_start(); 声明会话。 并使用$_SESSION['items'][] = $item;

应该工作..

【讨论】:

  • 实际上 @MarcB 仅适用于基于 cookie 的会话
  • @MarcB Ya 请让他明白,如果我们将session_start() 放在页面顶部会有什么危害
  • @dagon:如果您在页面上输出部分/所有表单和/或链接之后打开会话,它也会损害跨 sid 会话。 PHP 将无法及时返回以使用 trans_sid 重写以前执行的输出
  • 这适用于在它存在之前你不能使用的任何变量,没有什么特别的。
【解决方案3】:

要使用会话变量,您必须使用 session_start(); 启动会话 添加元素尝试$_SESSION['items'][]=$items; 并打印会话变量尝试print_r($_SESSION['items'][]);

foreach ($_SESSION['items'][] as $item)
{
       echo $item;
}

【讨论】:

    【解决方案4】:
    $_SESSION['req_id_in_sess'] = array();
    
    $_SESSION['req_id_in_sess'] = $req_id; //$req_id is array 
    
    
    
     foreach($_SESSION["req_id_in_sess"] as $key => $val)
        { 
    
            echo $val,"<br/>";
        }
    
    //for single output 
    
    echo  $_SESSION["req_id_in_sess"][0];
    

    【讨论】:

      【解决方案5】:

      就我而言,我正在扩充一些现有的基础 $_SESSION 变量。

      例如,我最初只是设置:

      $_SESSION['amount'] = 4300
      

      然后我尝试添加一个显示“子变量”:

      $_SESSION['amount']['Display'] = $4,300.00.
      

      但是我发现第二个操作覆盖了基础变量的一部分。

      解决方法是明确地做事:

      $_SESSION['amount']['Amount'] = 4300;
      $_SESSION['amount']['Display'] = $4,300.00
      

      【讨论】:

        猜你喜欢
        • 2011-02-20
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 2016-04-24
        • 1970-01-01
        • 2021-01-18
        相关资源
        最近更新 更多