Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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 - Fatal编程技术网

Php 如何从具有不同键的多维数组中删除重复值

Php 如何从具有不同键的多维数组中删除重复值,php,arrays,Php,Arrays,我正在尝试从多维数组中删除重复值。我试过很多例子,但我没有得到我想要的 我的数组在这里 Array ( [0] => Array ( [0] => stdClass Object ( [CouponCode] => REZEZ150 [PurchaseAmt] => 1000.00 [DiscountAmt] => 1

我正在尝试从多维数组中删除重复值。我试过很多例子,但我没有得到我想要的

我的数组在这里

Array
(
  [0] => Array
     (
        [0] => stdClass Object
            (
                [CouponCode] => REZEZ150
                [PurchaseAmt] => 1000.00
                [DiscountAmt] => 150.00
            )
        [1] => stdClass Object
            (
                [CouponCode] => REZEZ500
                [PurchaseAmt] => 2500.00
                [DiscountAmt] => 500.00
            )
    )
[1] => Array
    (
        [0] => stdClass Object
            (
                [CouponCode] => REZEZ150
                [PurchaseAmt] => 1000.00
                [DiscountAmt] => 150.00
            )
        [1] => stdClass Object
            (
                [CouponCode] => REZEZ350
                [PurchaseAmt] => 2000.00
                [DiscountAmt] => 350.00
            )
        [2] => stdClass Object
            (
                [CouponCode] => REZEZ500
                [PurchaseAmt] => 2500.00
                [DiscountAmt] => 500.00
            )
      )
     )
我希望在删除重复值后使用数组,如

 Array
    (
      [0] => Array
        (
            [0] => stdClass Object
                (
                    [CouponCode] => REZEZ150
                    [PurchaseAmt] => 1000.00
                    [DiscountAmt] => 150.00
                )
            [1] => stdClass Object
                (
                    [CouponCode] => REZEZ350
                    [PurchaseAmt] => 2000.00
                    [DiscountAmt] => 350.00
                )
            [2] => stdClass Object
                (
                    [CouponCode] => REZEZ500
                    [PurchaseAmt] => 2500.00
                    [DiscountAmt] => 500.00
                )
          )
         )
类似的问题和答案,但不能解决我的问题:

[How to remove duplicates from multidimensional array in php \[duplicate\]][1] 
试试这个

$arrResult = $arrResult1 = array();

foreach($arrData as $key1 => $arrData1){
    foreach($arrData1 as $key2 => $arrData2){
                $arrResult[] = $arrData2;
    }
}

$arrResult1[] = array_map("unserialize", array_unique(array_map("serialize", $arrResult)));

echo "<pre>"; print_r($arrResult1);
$arrResult=$arrrresult1=array();
foreach($arrData作为$key1=>$arrData1){
foreach($arrData1作为$key2=>$arrData2){
$arrResult[]=$arrData2;
}
}
$arrResult1[]=数组映射(“非序列化”,数组唯一(数组映射(“序列化”),$arrResult));
回声“;打印费用($arresult1);
谢谢 我已经解决了 首先我把它改成了一维数组

$j=array();     

foreach ($a as $key => $value) {
    $j[$value->CouponCode]['CouponCode']=$value->CouponCode;
    $j[$value->CouponCode]['PurchaseAmt']=$value->PurchaseAmt;
    $j[$value->CouponCode]['DiscountAmt']=$value->DiscountAmt;
}

p($j);
之后,运行foreach循环代表键和值,如

Array
(
    [REZEZ150] => Array
        (
            [CouponCode] => REZEZ150
            [PurchaseAmt] => 1000.00
            [DiscountAmt] => 150.00
        )

    [REZEZ500] => Array
        (
            [CouponCode] => REZEZ500
            [PurchaseAmt] => 2500.00
            [DiscountAmt] => 500.00
        )

    [REZEZ350] => Array
        (
            [CouponCode] => REZEZ350
            [PurchaseAmt] => 2000.00
            [DiscountAmt] => 350.00
        )

)
现在我得到了结果

$couponCodes = array();

$a = array_filter($a, function (stdClass $purchase) use (&$couponCodes) {
    if (in_array($purchase->CouponCode, $couponCodes)) {
        return false;
    }

    $couponCodes[] = $purchase->CouponCode;

    return true;
});
请告诉我这是好方法还是坏方法?

使用
array\u filter()

接着


有关参考,请参阅

我认为在提取数据时有一个问题,你能再解释一下你是如何从数据库中提取数据的吗?实际上,我在foreach循环中发送请求,然后在数组中一个接一个地得到响应,比如$response[$key],然后打印出循环;感谢您的回复,但它的工作方式与我所希望的不同当您在循环创建一维数组时,只需检查元素是否已经存在。这将避免第二个循环,并获得所需的未复制数组。
$couponCodes = array();

$a = array_filter($a, function (stdClass $purchase) use (&$couponCodes) {
    if (in_array($purchase->CouponCode, $couponCodes)) {
        return false;
    }

    $couponCodes[] = $purchase->CouponCode;

    return true;
});