如何在单个foreach循环php中比较值

时间:2015-10-27 08:53:39

标签: php opencart opencart2.x

我正在开发opencart。我不想让用户在购物车中多次添加同一产品。为此,我有一个逻辑,我想比较购物车中的产品。我会得到每个产品的产品ID(通过点击添加到购物车添加了多少用户),而不是我将比较这些ID。如果它们是相同的,我将向他们显示错误消息,否则他们可以继续。对于这个逻辑,我一直使用这个代码。

$products = $this->cart->getProducts();
foreach ($products as $product) 
{
$p_id=$product['product_id'];   
}

但我不知道如何在foreach循环中比较2个产品ID。并添加我的逻辑,如果产品ID相等,则显示错误消息。

5 个答案:

答案 0 :(得分:0)

您可以获得新产品ID的值,然后将其比作

//get product id to be added
$new_product = "get ID";

$products = $this->cart->getProducts();
foreach ($products as $product) 
{
$p_id=$product['product_id']; 
//compare with new product_id with existing
if ($_pid == $new_product){
echo " Product already exists!!";
}

}

答案 1 :(得分:0)

$products = $this->cart->getProducts();
$exist = false;
foreach ($products as $product) 
{
if ($p_id == $product['product_id']) {
$exist = true;
break;
}   
}

if (!$exist) {
//add product co cart
}

答案 2 :(得分:0)

试试这种方式

$products = $this->cart->getProducts();
$p_id = '';
foreach ($products as $product) 
{
  if($p_id != $product['product_id']) {
    $p_id=$product['product_id'];
  }else{
    echo " Product already exists!!";
  }
}

答案 3 :(得分:0)

这将为您提供唯一的ID列表以及需要删除的ID列表,以使列表唯一。

    // get the list of ID's
    $products = $this->cart->getProducts();
    $all = array();
    foreach ($products as $product) 
    {
        $all[] = $product['product_id'];   
    }

    // Flip the array twice to just get the unique ID's
    $unique = array_flip(array_flip($all));

    // Get a list of ID's that were lost
    $difference = array_diff_assoc($all, $unique);

答案 4 :(得分:0)

您可以在用户将产品添加到购物车时进行检查。为此,请修改add

中的controller->checkout->cart.php功能

public function add() {

添加

$products = $this->cart->getProducts();
if($products){
 foreach ($products as $product) 
    {
        if($this->request->post['product_id'] == $product['product_id']){
            $json['error']['blabla'] = 'Your warning message.';
            break;
        }
    }
}

之前

if (!$json) {

并在任何想要显示的地方显示该错误。就是这样。

相关问题