2016-12-06 1 views
0

Quand je feeds importer dans un champ de référence de l'entité, il crée des doublons qui ressemblent le code ci-dessous (en utilisant le module de devel)supprimer les valeurs en double des champs de référence de l'entité

$field_tags_people['und'][0]['target_id'] = 578 
$field_tags_people['und'][1]['target_id'] = 578 
$field_tags_people['und'][2]['target_id'] = 594 

chacun des target_id doit avoir des valeurs différentes mais s'avère que certains sont des doublons. J'ai essayé ce code

$field_tags_people['und'] = array_unique($field_tags_people['und']) 

mais il supprime tous les termes sauf le premier. Cela semble étrange en raison de la clé target_id. Comment puis-je faire ce travail?

Répondre

0

Il existe probablement de meilleurs moyens d'y parvenir, mais voici une solution.

$unique = []; 

$field_tags_people['und'] = array_filter($field_tags_people['und'], 
    function ($val) use (&$unique) { 
     if (!in_array($val['target_id'],$unique)) { 
      $unique[] = $val['target_id']; 
      return true; 
     } 
     return false; 
    } 
); 

unset($unique); 

Cela va couper les doublons pour vous. mais rappelons que la structure clé ne vous être remis à zéro si pourriez avoir des clés allant dans l'ordre comme 0, 1, 6, 7, 10

Vive

EDIT: Exemple en ligne: http://sandbox.onlinephpfunctions.com/code/9b4323a0b07ab8cd46b34a3715ea030f83e0b100