繁体   English   中英

在PHP中访问数组中的某个元素

[英]Accessing a certain element in an array in php

我有一系列产品。 如果不存在,我想再增加一个产品。 并将产品放入阵列中,如果阵列中已经有商品,则将其计数增加1。 我有以下代码。 它似乎不起作用。 顺便说一句,我是php新手,如果这是一个简单的问题,对不起。

if(!in_array($product, $sc->products)){
   array_push($sc->products,$product);
   }else{
   $key = array_search($product, $sc->products);
   $sc->products[$key]->productCounter++;
}

我的购物车课程

class shoppingChart extends Model
{
public $products;

function __construct() {
   $this->products = Array();
  }

public function ItemCount(){
   return count($this->products);

}
}

和我的产品类

class Product extends Model
{
    public $productCounter=0;

    public function image(){ 
       return $this->hasOne('App\Image');
    }
}

我认为问题是因为您基于此处的对象进行搜索:

array_search($product, $sc->products);
in_array($product, $sc->products);

考虑提供每个产品和id或某种unique identifier以用作比较。

您可以使用以下函数来添加产品数量或根据其ID返回产品:

function findProductById($id){

    // LOOP LIST OF PRODUCTS
    foreach ( $products as $product ) {

        // LOOK FOR MATCHING ID
        if ( $id == $product->id ) {

            // RETURN FOUND PRODUCT
            return $product;

        }

    }

    // RETURN FALSE (FAILED TO FIND PRODUCT)    
    return false;

}


function addToQuantityOfProduct($id){

    // GET PRODUCT FROM ID
    $foundProduct = findProductById($id);

    // CHECK IF PRODUCT FOUND
    if($foundProduct !== false){

        // ADD TO PRODUCT COUNTER
        $foundProduct->productCounter++;

        // RETURN TRUE (SUCCESSFULLY UPDATED QUANTITY)
        return true;

    }else{

        // RETURN FALSE (FAILED TO FIND PRODUCT)    
        return false;

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM