2015-09-07 3 views
0

У меня есть следующий массив с дублирующим значение, но только первую позицию:Как удалить и присоединиться повторяющееся значение из одного массива

array(3){ 
[0]=> array(5){ 
    [0]=>'user1', 
    [1]=>'2', 
    [2]=>'0', 
    [3]=>'0', 
    [4]=>'0', 
}, 
[2]=> array(5){ 
    [0]=>'user2', 
    [1]=>'0', 
    [2]=>'0', 
    [3]=>'0', 
    [4]=>'0' 
}, 
[3]=> array(5){ 
    [0]=>'user1', 
    [1]=>'0', 
    [2]=>'0', 
    [3]=>'0', 
    [4]=>'4' 
}} 


$newArray = array(); 
     foreach ($array as $key) { 
     $tmparray [] = array($key[0]); 
      foreach ($tmparray as $keytmp) { 
       if ($keytmp[0]==$key[0]) { 
        $position = array_search($keytmp[0], $key);     
        $newArray[] = array($keytmp[0]); 
       } 
      } 
    } 

но я попытался сравнить значение с array_search и создать новый массив, но только создать первый массив. Как я могу создать массив, чтобы присоединиться к первой позиции и третья, и сохранить позицию значений, как в примере ниже?

array(3){ 
[0]=> array(5){ 
    [0]=>'user1', 
    [1]=>'2', 
    [2]=>'0', 
    [3]=>'0', 
    [4]=>'4', 
}, 
[2]=> array(5){ 
    [0]=>'user2', 
    [1]=>'0', 
    [2]=>'0', 
    [3]=>'0', 
    [4]=>'0', 
}} 

Заранее благодарен!

ответ

0

Это должно работать для вас:

Просто цикл через массив и использовать первый ключ каждой подрешетки в качестве ключа в массиве результатов. Если он еще не установлен, вы просто назначаете subArray массиву результатов, иначе просто добавляете к нему значения.

В конце вы можете использовать array_values() для переиндексации вашего массива.

<?php 

    $result = []; 
    foreach($array as $innerArray) { 
     if(!isset($result[$innerArray[0]])) { 
      $result[$innerArray[0]] = $innerArray; 
     } else { 
      $result[$innerArray[0]][1] += $innerArray[1]; 
      $result[$innerArray[0]][2] += $innerArray[2]; 
      $result[$innerArray[0]][3] += $innerArray[3]; 
      $result[$innerArray[0]][4] += $innerArray[4]; 
     } 
    } 

    $result = array_values($result); 

?> 
+0

Большое вам спасибо за ответ, но значения полностью заменены для второго массива, и мне нужно сохранить массив всех значений ('user 1', '2', 0,0, '4'); –

+0

@frank_ivan Прекрасно работает для меня: https://3v4l.org/dMDST – Rizier123

+1

Спасибо за вашу помощь :)! –