2015-09-16 3 views
-2

Я новичок в stackoverflow, и мне нужна помощь.Удалить дубликаты и установить количество из многомерного массива

Я пытаюсь удалить дубликаты из многомерного массива в PHP, таких как:

Array (

[0] => Array ([Plat] => привет [Data ] => 01/01/2015 [Term] => PHP [Quan] => 1)

[1] => Array ([Plat] => hello [Data] => 01/01/2015 [ Term] => PHP [Quan] => 1)

[2] => Array ([Plat ] => hello [Data] => 03/01/2015 [Term] => PHP [Quan] => 1)

[3] => Array ([Plat] => hello [Data] => 03/01/2015 [Term] => PHP [Quan] => 1)

[4] => Array ([Plat] => hello [Data] => 03/01/2015 [Term] = > PHP [Квант] => 1)

[5] => Array ([Плат] => привет [данных] => 03/01/2015 [Термин] => PHP [Quan] => 1)

)

и создать массив, который удаляет дубликаты и добавляет [Quan] число дублей его, как обнаружено, как это (фильтруются данные):

Array (

[0] => Массив ([Plat] => hello [Data] => 01/01/2015 [Term] => PHP [Quan] => 2)

[1] => Array ([Plat] => hello [ Данные] => 03/01/2015 [Срок] => PHP [Quan] => 4)

)

Мой код: $ top - массив.

foreach($top as $value){ 
     if(!empty($temp_top)){ 
      for($i =0;$i<sizeof($temp_top);$i++){ 
       if($value['Data'] == $temp_top[$i]['Data']){ 
        $temp_top[$i]['Quan'] +=1; 
       }else{ 
        $temp_top[] = $value; 
       } 
      } 
     }else{ 
      $temp_top[] = $value; 
     } 

    } 

я уже судимый некоторые ответы, которые я нашел здесь в стеке, такие как:

$input = array_map("unserialize", array_unique(array_map("serialize", $top))); 

, но я не могу добавить, сколько есть в [Quan] ..

+0

Возможный дубликат [Как удалить повторяющиеся значения из многомерного массива в PHP] (http: // stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-array-in-php) –

+0

Джонатан Бендер, я не думаю, что это дубликат, но спасибо .. я видел что и использовал код, который был объяснен там, но я не могу обновить [Quan] :( – vs29

ответ

0

I нашел решение самостоятельно с помощью других сообщений.

Вот пример моего кода:

$temp_top = array_map("unserialize", array_unique(array_map("serialize", $top))); 
    $numvezesfound=0; 

    foreach($temp_top as $key => $value){ 
      for($i =0;$i<sizeof($top);$i++){ 
       if($value['Data'] == $top[$i]['Data']){ 
        $numvezesfound +=1; 
       } 
      } 
      $temp_top[$key]['Quan'] = $numvezesfound; 
      $numvezesfound = 0; 
     }  
    $top = $temp_top; 

если кто-то может помочь мне сделать этот код более прекрасным, я бы в вашей задолженности :)

спасибо все Тхи!

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