如何在不创建嵌套数组的情况下将多个变量添加到数组

Posted

技术标签:

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

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

这是用户故事

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

下面的代码似乎是正确的解决方案。但是它只返回最新的项目 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;

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于如何在不创建嵌套数组的情况下将多个变量添加到数组的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL,如何在不创建重复项的情况下将数组更新为现有数组?

在不删除原始 UserDefault 信息的情况下将数组附加到 UserDefaults

javascript 可以在不指定 PHP 等键的情况下将元素添加到数组吗?

如何在不改变的情况下更新对象数组的嵌套数组的状态

C#如何在不知道新数组长度的情况下将数组中的值保存到新数组中

如何在不破坏我的结构的情况下将特定单元格排除到 BigQuery 中的数组数组中?