我有一个问题,我下面的工作之一:我有一个这样的数组:
$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值时,您可能会得到假阳性。