php多维数组基于两个值删除重复项
我有回扣制度。用户将通过输入型号、序列号、经销商名称和购买日期来检查其产品是否符合返利条件 如果产品符合条件,则将这些值添加到会话数组中php多维数组基于两个值删除重复项,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有回扣制度。用户将通过输入型号、序列号、经销商名称和购买日期来检查其产品是否符合返利条件 如果产品符合条件,则将这些值添加到会话数组中 array(4) { [0]=> array(6) { ["id"]=> string(0) "" ["model"]=> string(7) "CP05G10" ["serial"]=> string(9) "ABCK50786" ["pdate"]=> string(10) "2013-05-18" ["amt"]=>
array(4) {
[0]=> array(6) { ["id"]=> string(0) "" ["model"]=> string(7) "CP05G10" ["serial"]=> string(9) "ABCK50786" ["pdate"]=> string(10) "2013-05-18" ["amt"]=> string(2) "25" ["dealer"]=> string(8) "79163500" }
[1]=> array(6) { ["id"]=> string(0) "" ["model"]=> string(7) "EP24G33" ["serial"]=> string(9) "AAMK01127" ["pdate"]=> string(10) "2013-05-18" ["amt"]=> string(2) "25" ["dealer"]=> string(8) "79163500" }
[2]=> array(6) { ["id"]=> string(0) "" ["model"]=> string(7) "CP05G10" ["serial"]=> string(9) "ABCK50786" ["pdate"]=> string(10) "2013-05-17" ["amt"]=> string(2) "25" ["dealer"]=> string(8) "79163500" }
[3]=> array(6) { ["id"]=> string(0) "" ["model"]=> string(7) "EP24G33" ["serial"]=> string(9) "AAMK01127" ["pdate"]=> string(10) "2013-05-17" ["amt"]=> string(2) "25" ["dealer"]=> string(8) "79163500" }
}
我遇到的问题是,用户添加的型号和序列号相同,但购买日期或经销商不同。这会在系统中创建重复项
我需要的是根据型号和序列号删除重复项
我已落实以下建议:
//echo $amount;
if ($amount != ''){
$rebate[] = $tmprebate = array("id" => '', "model" => $model_number, "serial" => $serial_number, "pdate" => $purchase_date, "amt" => $amount, "dealer" => $dealerid);
}else{
$noRebate[] = $tmprebate = array("id" => '', "model" => $model_number, "serial" => $serial_number, "pdate" => $purchase_date);
}
if( isset($_SESSION['rebate']) ){
foreach($_SESSION['rebate'] as $session )
{
if($session['serial'] != $serial_number && $session['model'] != $model_number){
$_SESSION['rebate'] = $rebate;
$_SESSION['noRebate'] = $noRebate;
}
}
}else{
$_SESSION['rebate'] = $rebate;
$_SESSION['noRebate'] = $noRebate;
}
我重新实现了建议的代码,一切正常
// check to see if model and serial already exist in Session
if( isset($_SESSION['rebate'])){
$match_rebate = 0;
foreach($_SESSION['rebate'] as $session )
{
if($session['serial'] == $serial_number && $session['model'] == $model_number){ // if session matches what is being submitted
$match_rebate = 1;
}
}
}else{
$_SESSION['rebate'] = $rebate;
$_SESSION['noRebate'] = $noRebate;
}
if($match_rebate == 0)
{
$_SESSION['rebate'] = $rebate;
$_SESSION['noRebate'] = $noRebate;
}
创建会话之前,请检查会话阵列中是否存在型号和序列号,而不是根据型号和序列号删除重复项。如果找到,您可以避免创建会话,或者创建一个会话。 调整代码
if ($amount != ''){
$rebate[] = $tmprebate = array("id" => '', "model" => $model_number, "serial" => $serial_number, "pdate" => $purchase_date, "amt" => $amount, "dealer" => $dealerid);
}else{
$noRebate[] = $tmprebate = array("id" => '', "model" => $model_number, "serial" => $serial_number, "pdate" => $purchase_date);
}
if( isset($_SESSION['rebate'])){
$match_rebate = 0;
foreach($_SESSION['rebate'] as $session )
{
if($session['serial'] == $serial_number && $session['model'] == $model_number){
$match_rebate = 1;
}
}
}else{
$_SESSION['rebate'] = $rebate;
}
if( isset($_SESSION['norebate'])){
$match_norebate = 0;
foreach($_SESSION['norebate'] as $session2 )
{
if($session2['serial'] == $serial_number && $session2['model'] == $model_number){
$match_norebate = 1;
}
}
}else{
$_SESSION['noRebate'] = $noRebate;
}
if($match_rebate == 0)
{
array_push($_SESSION['rebate'],$rebate);
}
if($match_norebate == 0)
{
array_push($_SESSION['norebate'],$noRebate);
}
格式化之母。@ChrisCooney:编辑而不是放置诙谐的评论会更有帮助。@MadaraUchiha它是在我发布后不久编辑的。@user2091928:不要编辑我的帖子,请在我的帖子下用你的解决方案或评论更新你的问题。我检查了你的代码,我知道问题出在哪里。如果您的问题或评论中有更新,我将能够回答。我已经实现了上述建议,但它似乎不起作用。请再次发布您实现的代码,以便每个人都可以查看。只需删除
else{$\u SESSION['retrie']=$retrie;$\u SESSION['noRebate']=$noRebate;}
在您的编辑中建议。在我删除了else之后,如果会话为NULL,那么就应该这样做,不会添加任何内容。