Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php多维数组基于两个值删除重复项_Php_Arrays_Multidimensional Array - Fatal编程技术网

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,那么就应该这样做,不会添加任何内容。