Php关联数组值插入,错误键显示

时间:2016-06-13 04:19:19

标签: php arrays associative

继承我的问题。我有一个关联数组,并希望键匹配传递给函数的项对象的项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用作数组中的键?

由于

2 个答案:

答案 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.'
        }]
    });

}
});
  

参考https://3v4l.org/N96Vc

答案 1 :(得分:-2)

您是否尝试过(字符串)$ item-> ItemID?如果我没有弄错,关联数组键必须是字符串。否则,您使用的是数组索引,而不是密钥。