查找数组php中的重复项



我有一个问题,我下面的工作之一:我有一个这样的数组:

$prodottocar=array( 

'CodicArt'=>$_POST['codart'],
'NomeProdotto'=>$_POST['nomeprodotto'],
'Categoria'=>$_POST['categoria'],
'Colore'=>$_POST['colore'],
'Prezzo'=>$_POST['prezzo'],
'Taglia'=>$taglia['Taglia'],
'Quantita'=>$_POST[$quantita]

);

这个数组将被推入一个会话数组,我必须检查是否有另一个具有相同的codicheart和Taglia的内部,以便告诉我它是否重复,我试过这样做:

if($prodottocar['CodicArt'] != NULL ){
if(in_array($_POST['codart'], array_column($_SESSION['carrello'], 'CodicArt')) and in_array($taglia['Taglia'], array_column($_SESSION['carrello'], 'Taglia')))
{
echo '<script type="text/javascript">alert("Articolo duplicato");</script>';                                                                                 
}else
{                                                                       
array_push($_SESSION['carrello'], $prodottocar);                                                                          
echo '<script type="text/javascript">alert("Prodotto inserito");</script>';
       
}
} 

但是插入了第一篇文章,当我去插入另一篇具有不同心脏代码的文章时,他检测到已经为该文章插入了相同的大小,就好像逻辑与运算符没有对他进行权衡一样一些主意吗?

如果你知道你需要一个快速的方法来检查/匹配一些东西,把它作为一个数组键(这是一个HashMap的卧底)总是一个聪明的主意。

由于需要两个参数进行匹配,因此我将从两个参数生成一个键:

$key = sprintf('%s|%s', $_POST['codart'], $taglia['Taglia']);

然后在存储时,将所有数据放在此键下:

$_SESSION['carrello'][$key] = $prodottocar;

然后检查也快捷方便:

array_key_exists($key, $_SESSION['carrello'])

您的解决方案中的问题是您分别检查每个列,因此当有一个产品具有搜索的codart而另一个项目具有搜索的Taglia值时,您可能会得到假阳性。

相关内容

  • 没有找到相关文章

最新更新