我有一系列产品。如果它不存在,我想再向数组添加一个产品。并将产品放入数组中,如果项目已经在数组中,则将项目数增加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');
}
}
答案 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;
}
}