继承我的问题。我有一个关联数组,并希望键匹配传递给函数的项对象的项ID。如果数组中尚不存在item id键,我想将item id作为键添加到cart数组中,并将新数组["Item"=>$item,"Quantity=>1]
作为键值。
如果密钥已经存在,我只想通过使用项目ID索引购物车数组来更新存储在数组中的数量。
以下是我认为会产生这些结果的代码(位于Cart.class.php中):
private $cart_items = array();
public function add_to_cart($item, $quantity = 1){
if(!isset($item) || !isset($item->ItemID)){
throw new Exception("Error adding item to cart");
}
if(!array_key_exists($item->ItemID,$this->cart_items)){
$this->cart_items[$item->ItemID] = array("Item"=>$item,"Quantity"=>$quantity);
}else{
$this->cart_items[$item->ItemID]["Quantity"] += $quantity;
}
$this->number_of_cart_items+=$quantity;
}
但是,使用var_dump($this->cart_items)
时会输出以下内容:
array(2){
[
0
] => NULL [
1
] => array(2) {
[
"Item"
] => object(stdClass)#2 (8) {
[
"ItemID"
] => int(11) [
"ItemName"
] => string(18) "Kids check T-Shirt" [
"ShortDescription"
] => string(20) "A kids check T-Shirt" [
"LongDescription"
] => string(51) " A kids check T-shirt perfect for formal occasions!" [
"ItemPrice"
] => float(33.59) [
"ImagePath"
] => string(51) "kozzi-26129586-1591x2387.jpg" [
"QuantityAvailable"
] => int(100) [
"ItemSupplier_SupplierID"
] => int(1)
} [
"Quantity"
] => int(1)
}
}
我的问题是$item->ItemID
没有被用作关联数组的键(你可以看到键是[0] [1],第一个是null,即使我正在使用{ {1}}。
我的问题是我做错了什么以及为什么不将ID用作数组中的键?
由于
答案 0 :(得分:0)
代码对我来说很好。
Ext.application({
name : 'extjs-tutorial.com',
launch : function(){
Ext.create('Ext.container.Viewport',
{
layout : 'fit',
items : [{
title : 'First ExtJS Application - Viewport title',
html : 'Application Viewport area.'
}]
});
}
});
答案 1 :(得分:-2)
您是否尝试过(字符串)$ item-> ItemID?如果我没有弄错,关联数组键必须是字符串。否则,您使用的是数组索引,而不是密钥。