如何在单个 foreach 循环中比较值 php
How to compare values in a single foreach loop php
我正在研究 opencart.I 不想让用户在购物车中多次添加相同的产品。为此,我有一个逻辑,我想比较购物车中的产品。我将获得每个产品的产品 ID(通过单击“添加到购物车”添加了多少用户),而不是比较这些 ID。如果它们相同,我将向它们显示错误消息,否则它们可以继续。对于这个逻辑,我一直使用这个代码到现在。
$products = $this->cart->getProducts();
foreach ($products as $product)
{
$p_id=$product['product_id'];
}
但我不明白如何在 foreach 循环中比较 2 个产品 ID。然后添加我的逻辑,如果产品 ID 相等则显示错误消息。
您可以获得新产品 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!!";
}
}
$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
}
试试这个方法
$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!!";
}
}
这将为您提供一个唯一 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);
您可以在用户将产品添加到购物车时简单地检查它。为此修改 controller->checkout->cart.php
中的 add
函数
在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) {
并在您想显示的任何地方显示该错误。就是这样。
我正在研究 opencart.I 不想让用户在购物车中多次添加相同的产品。为此,我有一个逻辑,我想比较购物车中的产品。我将获得每个产品的产品 ID(通过单击“添加到购物车”添加了多少用户),而不是比较这些 ID。如果它们相同,我将向它们显示错误消息,否则它们可以继续。对于这个逻辑,我一直使用这个代码到现在。
$products = $this->cart->getProducts();
foreach ($products as $product)
{
$p_id=$product['product_id'];
}
但我不明白如何在 foreach 循环中比较 2 个产品 ID。然后添加我的逻辑,如果产品 ID 相等则显示错误消息。
您可以获得新产品 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!!";
}
}
$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
}
试试这个方法
$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!!";
}
}
这将为您提供一个唯一 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);
您可以在用户将产品添加到购物车时简单地检查它。为此修改 controller->checkout->cart.php
add
函数
在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) {
并在您想显示的任何地方显示该错误。就是这样。