我需要将项目添加到数组,而不是替换它们
I Need to add items to array, not replace them
我有一点脚本系统。它取代了数组,但我需要它来添加到数组中。这是我的:
$_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);
您似乎在第二组代码中重新创建数组,这意味着您将删除数组中已有的所有内容。对于第二组代码,您是否只尝试了 array_push
而没有 $_SESSION['cart']=array();
?如果不行,请尝试去掉第一行,看看它是否有效。
使用此语法附加:
$_SESSION['cart'][] = 'item1';
$_SESSION['cart'][] = 'item2';
编辑:
// declare only if needed
if (!array_key_exists('cart', $_SESSION)) $_SESSION['cart'] = array();
// when adding an item at any future time once $_SESSION['cart'] exists:
$_SESSION['cart'][] = array(
'itemName' => 'my item',
'price' => 13.99
);
你声明了 2 次$_SESSION['cart']
。删除第二个声明,你应该可以开始了。
编辑:
你没有为 array_push 使用正确的语法。
如果我理解正确 - 键的索引(自 array_push 以来为数字)困扰您。
您可以使用此代码绕过:
$_SESSION['cart'] = array();
$_SESSION['cart']['itemName'] = 12.50;
$_SESSION['cart'] = $_SESSION['cart'] + array("blabla" => 13.99);
print "<pre>";
print_r($_SESSION);
print "</pre>";
结果:
Array
(
[cart] => Array
(
[itemName] => 12.5
[blabla] => 13.99
)
)
最后编辑:(!?!)
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
)
)
)
否则请检查此线程:
Whosebug : how-to-push-both-value-and-key-into-array-php
每次调用此行:
$_SESSION['cart']=array();
您正在清理您的购物车会话。如果你也将它包装在 if 语句中以检查数组是否已经被实例化,那么你不会每次都清除它并且你应该能够按预期添加它:
if (!isset($_SESSION['cart'])) {
$_SESSION['cart']=array();
}
您在向数组添加内容之前清空数组您声明 $_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);
您似乎在第二组代码中重新创建数组,这意味着您将删除数组中已有的所有内容。对于第二组代码,您是否只尝试了 array_push
而没有 $_SESSION['cart']=array();
?如果不行,请尝试去掉第一行,看看它是否有效。
使用此语法附加:
$_SESSION['cart'][] = 'item1';
$_SESSION['cart'][] = 'item2';
编辑:
// declare only if needed
if (!array_key_exists('cart', $_SESSION)) $_SESSION['cart'] = array();
// when adding an item at any future time once $_SESSION['cart'] exists:
$_SESSION['cart'][] = array(
'itemName' => 'my item',
'price' => 13.99
);
你声明了 2 次$_SESSION['cart']
。删除第二个声明,你应该可以开始了。
编辑:
你没有为 array_push 使用正确的语法。
如果我理解正确 - 键的索引(自 array_push 以来为数字)困扰您。
您可以使用此代码绕过:
$_SESSION['cart'] = array();
$_SESSION['cart']['itemName'] = 12.50;
$_SESSION['cart'] = $_SESSION['cart'] + array("blabla" => 13.99);
print "<pre>";
print_r($_SESSION);
print "</pre>";
结果:
Array
(
[cart] => Array
(
[itemName] => 12.5
[blabla] => 13.99
)
)
最后编辑:(!?!)
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
)
)
)
否则请检查此线程:
Whosebug : how-to-push-both-value-and-key-into-array-php
每次调用此行:
$_SESSION['cart']=array();
您正在清理您的购物车会话。如果你也将它包装在 if 语句中以检查数组是否已经被实例化,那么你不会每次都清除它并且你应该能够按预期添加它:
if (!isset($_SESSION['cart'])) {
$_SESSION['cart']=array();
}
您在向数组添加内容之前清空数组您声明 $_SESSION['cart'] 等于一个新的空数组