2015-12-29 4 views
0

Я пытаюсь удалить повторяющееся значение из многомерного массива. Я пробовал много примеров, но я не получаю, как хочу.Как удалить повторяющееся значение из многомерного массива с другим ключом

Моего массива здесь

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] 
+0

Я думаю, что есть проблема при извлечении данных, можете ли вы объяснить немного больше, как вы извлекаете данные из своего db ?? – Abbas

+0

Фактически я отправляю запрос в цикле foreach и получаю ответ один за другим после добавления в массив Как $ response [$ key] и распечатывать его из цикла; – RITU

ответ

0

Попробуйте это,

$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); 
+0

Спасибо за ваш ответ, но его не работает, как я хочу – RITU

0

Спасибо я решил его Во-первых, я изменил его, чтобы одномерный массив как

$a = Array 
(
    [0] => stdClass Object 
     (
      [CouponCode] => REZEZ150 
      [PurchaseAmt] => 1000.00 
      [DiscountAmt] => 150.00 
     ) 

    [1] => stdClass Object 
     (
      [CouponCode] => REZEZ500 
      [PurchaseAmt] => 2500.00 
      [DiscountAmt] => 500.00 
     ) 

    [2] => stdClass Object 
     (
      [CouponCode] => REZEZ150 
      [PurchaseAmt] => 1000.00 
      [DiscountAmt] => 150.00 
     ) 

    [3] => stdClass Object 
     (
      [CouponCode] => REZEZ350 
      [PurchaseAmt] => 2000.00 
      [DiscountAmt] => 350.00 
     ) 

    [4] => stdClass Object 
     (
      [CouponCode] => REZEZ500 
      [PurchaseAmt] => 2500.00 
      [DiscountAmt] => 500.00 
     ) 

) 

после этого цикла выполнения Еогеаспа имени ключа и значения Как

$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); 

И теперь я полученный результат

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 
     ) 

) 

Пожалуйста, просто предложите мне это хорошо или нет?

+0

Единственное измерение всегда лучше всего управлять массивом. –

+0

Пока вы нажимаете для создания массива одного измерения, просто проверьте, существует ли этот элемент. Это позволит избежать второго цикла и получить нулированный массив, который вам нужен. – cpugourou

Смежные вопросы