【问题标题】:How do I add multiple variables to an array without creating nested arrays如何在不创建嵌套数组的情况下将多个变量添加到数组
【发布时间】:2017-03-13 16:01:45
【问题描述】:

我遇到了一个比我想象的更难解决的问题。并且没有找到让我到达我需要去的地方的答案。 目标是将东西添加到会话变量中的列表中,该变量的工作类似于购物车。基本上有人会在列表中添加 1 个项目,然后添加其他项目,每个项目都会添加到一个数组中。但是在使用了各种方法后,我仍然没有得到我需要的东西。

这是用户故事

  1. 用户单击以将项目添加到列表
  2. 已创建会话变量 - 将项目 ID 添加到会话变量中
  3. 用户添加附加项
  4. 添加到会话变量 session 的项目现在是一个数组
  5. 步骤 3 和 4 可根据用户需要重复多次。
  6. 这一切都需要进入一个没有嵌套的平面阵列。

下面的代码似乎是正确的解决方案。但是它只返回最新的项目 ID 而不会创建数组。我有其他创建数组的解决方案,但它们为每个附加项目创建嵌套数组,所以不是我需要的。任何帮助,将不胜感激。

//Request Item From Post

$itemAdded = $_REQUEST['pPageItemID']; $currentItems = $_SESSION['ITEM_IDS'];

//如果已经设置了会话,则将其更改为数组以添加多个ID if (isset($_SESSION['ITEM_IDS'])) {

//Check to see if this is acutally a form post and then set session
if (isset($_REQUEST['pPageItemID'])){

    $newItems = array_merge($currentItems, $itemAdded);

    //Set new session with old and new IDs
    $_SESSION['ITEM_IDS'] = $newItems;
}

}

//如果没有设置会话,则检查是否设置了会话变量并添加产品ID if (is_null($_SESSION['ITEM_IDS'])) {

//Check to see if this is acutally a form post and then set session
if (isset($_REQUEST['pPageItemID'])){
    $_SESSION['ITEM_IDS'] = $itemAdded;
}

}

【问题讨论】:

    标签: php arrays session


    【解决方案1】:

    我想通了。我的问题是假设 PHP 会将单个变量理解为具有单个变量的数组。我错了!

    一个简单的修复 - 我只需要在合并期间将它定义为一个数组。将代码更新到下面,它运行良好。

    $newItems = array_merge((array)$currentItems, (array)$itemAdded);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2019-02-11
      • 2017-09-03
      • 1970-01-01
      相关资源
      最近更新 更多