Php 我需要向数组中添加项,而不是替换它们

Php 我需要向数组中添加项,而不是替换它们,php,arrays,session,save,cart,Php,Arrays,Session,Save,Cart,我有一个小脚本系统。它将替换阵列,但我需要将其添加到阵列中。这就是我所拥有的: $_SESSION['cart']=array(); // Declaring session array array_push($_SESSION['cart'],'item1'); // Item added to cart 如果在此之后我提交: $_SESSION['cart']=array(); // Declaring session array array_push($_SESSION['cart'],

我有一个小脚本系统。它将替换阵列,但我需要将其添加到阵列中。这就是我所拥有的:

$_SESSION['cart']=array(); // Declaring session array
array_push($_SESSION['cart'],'item1'); // Item added to cart
如果在此之后我提交:

$_SESSION['cart']=array(); // Declaring session array
array_push($_SESSION['cart'],'item2'); // Item added to cart
它将在数组中包含item2,而不是item1和item2。 我怎样才能让它这样做

所以我稍微修改了我的代码,而不是当我按两次下面的代码时,它会覆盖项目。我怎样才能让它再加一个呢

array_push($_SESSION['cart']['itemName'] = 13.99);

看起来您正在第二组代码上重新创建数组,这意味着您将删除数组中已经存在的所有内容。您是否尝试过在没有$\u会话['cart']=array的情况下使用array\u push;第二组代码?如果没有,请尝试删除第一行,看看它是否有效。

似乎您正在第二组代码上重新创建数组,这意味着您将删除数组中已经存在的所有内容。您是否尝试过在没有$\u会话['cart']=array的情况下使用array\u push;第二组代码?如果没有,请尝试删除第一行,看看它是否有效。

使用此语法附加:

$_SESSION['cart'][] = 'item1';
$_SESSION['cart'][] = 'item2';
编辑:


使用此语法附加:

$_SESSION['cart'][] = 'item1';
$_SESSION['cart'][] = 'item2';
编辑:

U声明了2次$\U会话['cart']。删除第二个声明,你应该很好地去

编辑:

你没有为数组使用正确的语法

如果我理解正确的话,数组的索引会让你感到困扰

您可以使用以下代码绕过:

$_SESSION['cart'] = array();
$_SESSION['cart']['itemName'] = 12.50;

$_SESSION['cart'] = $_SESSION['cart'] + array("blabla" => 13.99);

print "<pre>";
print_r($_SESSION);
print "</pre>";
最后编辑:

否则,请检查此线程:

U声明了2次$\U会话['cart']。删除第二个声明,你应该很好地去

编辑:

你没有为数组使用正确的语法

如果我理解正确的话,数组的索引会让你感到困扰

您可以使用以下代码绕过:

$_SESSION['cart'] = array();
$_SESSION['cart']['itemName'] = 12.50;

$_SESSION['cart'] = $_SESSION['cart'] + array("blabla" => 13.99);

print "<pre>";
print_r($_SESSION);
print "</pre>";
最后编辑:

否则,请检查此线程:


每次拨打此电话:

您正在清理您的购物车会话。如果还将其包装在If语句中以检查数组是否已实例化,则不会每次都将其清除,您应该能够按预期添加到其中:


每次拨打此电话:

您正在清理您的购物车会话。如果还将其包装在If语句中以检查数组是否已实例化,则不会每次都将其清除,您应该能够按预期添加到其中:


你在添加数组之前清空数组,你声明$_会话['cart']等于一个新的空数组

你在添加数组之前清空数组,你声明$_会话['cart']等于一个新的空数组

非常感谢,我对php知之甚少,在stackoverflow上找不到类似的问题。谢谢它工作@Nendotaka请将问题标记为已回答,以便人们知道您找到了解决方案。我当然会,但它一直说您可以在XX分钟内将此标记为正确,并且为您的编辑指定索引项名称一个值。因此,当您再次运行此代码时,您只是在旧值上重新分配值。您需要使用不同的索引名来存储新值。有没有一种方法可以在数量系统中构建。你有什么想法吗。我甚至不知道该怎么开始。因为每个项目都需要第三个值。谢谢。非常感谢,我对php知之甚少,在stackoverflow上找不到类似的问题。谢谢它工作@Nendotaka请将问题标记为已回答,以便人们知道您找到了解决方案。我当然会,但它一直说您可以在XX分钟内将此标记为正确,并且为您的编辑指定索引项名称一个值。因此,当您再次运行此代码时,您只是在旧值上重新分配值。您需要使用不同的索引名来存储新值。有没有一种方法可以在数量系统中构建。你有什么想法吗。我甚至不知道该怎么开始。因为每个项目都需要第三个值。谢谢。请阅读,array_push的语法不正确,它需要两个+参数。首先是目标数组,然后是值。如果您试图输入该键,只需直接使用=即可。感谢您的回复。我不明白直接使用=我直接把它放在那里,不是吗?$\u SESSION['cart']['itemName']=13.99进行赋值,左边的设置为右边的。假设它有效,它将返回一个true。然后按照操作顺序,PHP将运行array_pushtrue,这不会做任何事情。好的,谢谢。如果您想查看我的编辑,是否有方法将其添加两次或添加另一个字段数量谢谢@mike.k请阅读,array_push的语法不正确,它需要两个+参数。首先是目标数组,然后是值。如果您试图输入该键,只需直接使用=即可。感谢您的回复。我不明白直接使用=我直接把它放在那里,不是吗?$\u SESSION['cart']['itemName']=13.99分配什么
左边的设置为右边的设置。假设它有效,它将返回一个true。然后按照操作顺序,PHP将运行array_pushtrue,这不会做任何事情。好的,谢谢。如果您想查看我的编辑,是否有办法添加两次或添加另一个字段数量谢谢@mike.kHey谢谢更新,它不会有帮助。我把它放进我的系统,它做的和我的代码完全一样。当第一次激活时,将其添加到arraycart,然后在此后的任何时间,它都不会改变任何内容。你有没有办法不把两个相同的项目放在一个数量特征中,我怎么能做到呢?谢谢@Falt4rm首先,你将无法在一个数组中获得两个同名的键。在那之后你怎么知道你想要哪一个?据我所知,为了在同一个项目上使用添加功能,您必须执行另一个lvl-例如:[cart][itemName][0]进行第一次添加,然后[cart][itemName][1]进行第二次添加。是的,但如果我只是这样添加它,代码就会混乱。是否有向一个数组添加第三个变量的技巧?谢谢,谢谢你的链接。但这没用,这正是我在用的。在一个数组中获取两个对象。我想知道我是否能得到三个。这就是我所拥有的[itemName][itemPrice]我想让“[itemName][itemPrice][itemQuantity+1]”如果可能的话[itemName][itemPrice][itemQuantity+1]毫无意义,因为价格存储在您的数据库中,或者应该是。[itemName]=>itemQuantity然后从ur db查询ItemPrice是唯一正确的处理方法。无法证明使用itemPrice再添加一个维度是合理的。和平嘿,谢谢你的更新,这没用。我把它放进我的系统,它做的和我的代码完全一样。当第一次激活时,将其添加到arraycart,然后在此后的任何时间,它都不会改变任何内容。你有没有办法不把两个相同的项目放在一个数量特征中,我怎么能做到呢?谢谢@Falt4rm首先,你将无法在一个数组中获得两个同名的键。在那之后你怎么知道你想要哪一个?据我所知,为了在同一个项目上使用添加功能,您必须执行另一个lvl-例如:[cart][itemName][0]进行第一次添加,然后[cart][itemName][1]进行第二次添加。是的,但如果我只是这样添加它,代码就会混乱。是否有向一个数组添加第三个变量的技巧?谢谢,谢谢你的链接。但这没用,这正是我在用的。在一个数组中获取两个对象。我想知道我是否能得到三个。这就是我所拥有的[itemName][itemPrice]我想让“[itemName][itemPrice][itemQuantity+1]”如果可能的话[itemName][itemPrice][itemQuantity+1]毫无意义,因为价格存储在您的数据库中,或者应该是。[itemName]=>itemQuantity然后从ur db查询ItemPrice是唯一正确的处理方法。无法证明使用itemPrice再添加一个维度是合理的。和平
 function set_item_price($itemName, $itemPrice)
{
    if(!isset($_SESSION['cart'][$itemName]['itemPrice']))
        $_SESSION['cart'][$itemName]['itemPrice'] = $itemPrice;

    else
        echo "Item Already exists \n <br>";
}

function add_to_cart($itemName, $quantity)
{
    if(!isset($_SESSION['cart'][$itemName]['quantity']))
        $_SESSION['cart'][$itemName]['quantity'] = $quantity;

    else
        $_SESSION['cart'][$itemName]['quantity'] += $quantity;
}




// Adding item1 - price 12.50
set_item_price("item1", 12.50);

// Adding item1 - quantity - 2 & 3
// OutPut will be 5
add_to_cart("item1", 2);
add_to_cart("item1", 3);

// Adding item3 - price 15.70
set_item_price("item3", 15.70);

// Adding item1 - quantity - 5
add_to_cart("item3", 5);


print "<pre>";
print_r($_SESSION);
print "</pre>";


?>
Array
(
[cart] => Array
    (
        [item1] => Array
            (
                [itemPrice] => 12.5
                [quantity] => 5
            )

        [item3] => Array
            (
                [itemPrice] => 15.7
                [quantity] => 5
            )

    )

)
$_SESSION['cart']=array();
if (!isset($_SESSION['cart'])) {
    $_SESSION['cart']=array();
}