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

时间:2017-06-13 15:36:31

标签: php arrays laravel

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

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

我的shoppingCart课程

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');
    }
}

1 个答案:

答案 0 :(得分:1)

我认为问题是因为你在这里根据一个对象进行搜索:

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;

    }

}