2015-08-14 1 views
0

J'ai essayé de fusionner ce tableau SEULEMENT O WH $array[4] existe plus d'une fois, par exemple: $array[4] == 'red' exactement deux fois. Comment puis-je fusionner uniquement ces tableaux tout en gardant les autres? J'ai fait plusieurs tentatives à ce sujet et je suis prêt à inclure mes efforts si demandé.Fusionner tableau où dupliquer dans un tableau multidimensionnel

Tenir compte de ce tableau:

array(3) { 
    [0]=> 
    array(5) { 
       [0]=> 
       string(3) "UID" 
       [1]=> 
       string(3) "532" 
       [2]=> 
       string(1) "2" 
       [3]=> 
       string(9) "Domain(s)" 
       [4]=> 
       string(20) "red" 
      } 
[1]=> 
    array(5) { 
      [0]=> 
       string(3) "UID" 
      [1]=> 
       string(3) "532" 
      [2]=> 
       string(7) "License" 
      [3]=> 
       string(3) "Fee" 
      [4]=> 
       string(20) "red" 
      } 
[2]=> 
    array(5) { 
       [0]=> 
       string(3) "UID" 
       [1]=> 
       string(3) "536" 
       [2]=> 
       string(7) "License" 
       [3]=> 
       string(3) "Fee" 
       [4]=> 
       string(16) " University Test" 
      } 
    } 

ESSAYER Accomplir:

array(3) { 
    [0]=> 
    array(5) { 
       [0]=> 
       string(3) "UID" 
       [1]=> 
       string(3) "532" 
       [2]=> 
       string(1) "2" 
       [3]=> 
       string(9) "Domain(s)" 
       [4]=> 
       string(20) " red" 
       [5]=> 
       string(3) "Fee" 
       [6]=> 
       string(7) "License" 
      } 
[1]=> 
    array(5) { 
       [0]=> 
       string(3) "UID" 
       [1]=> 
       string(3) "536" 
       [2]=> 
       string(7) "License" 
       [3]=> 
       string(3) "Fee" 
       [4]=> 
       string(16) " University Test" 
      } 
    } 
+0

Y at-il l'approche que vous avez essayé? –

+0

Vous obtiendrez la 'clé 'du doublon, puis l'enlever en utilisant le' key'. Il vous resterait un espace dans la clé, mais vous utiliseriez 'array_values' pour réorganiser les clés. – Script47

+0

L'ordre des éléments dans le tableau résultant est-il important? –

Répondre

1
foreach ($test as $item) { 
    if (!isset($merged[$item[4]])) { 
     // add the item to the merged array using key=$item[4] 
     $merged[$item[4]] = $item; 
    } else { 
     // merge the item with the item that is already in the array at key=$item[4] 
     $merged[$item[4]] = array_unique(array_merge($merged[$item[4]], $item)); 
     // array_unique is necessary because array_merge will not overwrite numeric keys 
    } 
} 
// convert the keys back to numeric (if you care to) 
$merged = array_values($merged); 
+0

Ceci. Travaillé. Merci mon pote. Je ne savais pas que vous pouviez 'array_unique (array_merge))'! – Kisaragi