我有一个小脚本系统。它取代了数组,但我需要它来添加到数组中。这就是我所拥有的:
$_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);
答案 0 :(得分:2)
您似乎正在第二组代码上重新创建数组,这意味着您将删除数组中已有的所有内容。对于第二组代码,您是否仅在没有array_push
的情况下尝试$_SESSION['cart']=array();
?如果没有尝试摆脱第一行,看看它是否有效。
答案 1 :(得分:2)
使用此语法追加:
$_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 :(得分:0)
U宣布了2次$_SESSION['cart']
。删除第二个声明,你应该很高兴。
编辑:
你不要使用array_push的正确语法。
如果我理解正确 - 键的索引(数字,因为array_push)困扰你。
U可以使用此代码绕过:
$_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
)
)
)
否则请检查此主题:
Stackoverflow : how-to-push-both-value-and-key-into-array-php
答案 3 :(得分:0)
每次调用此行:
$_SESSION['cart']=array();
您正在清理购物车会话。如果你将它包装在if语句中以检查数组是否已经被实例化,那么你每次都不会清除它,你应该能够按预期添加它:
if (!isset($_SESSION['cart'])) {
$_SESSION['cart']=array();
}
答案 4 :(得分:0)
在添加数组之前,您正在清空数组,并声明$ _SESSION [&#39; cart&#39;]等于新的空数组