2016-12-06 6 views
0

Когда я импортировать каналы в ссылочной объект поля, создает повторяющиеся значения, которые выглядят как код ниже (с помощью модуля Devel)удалить повторяющиеся значения из сущностей ссылочных полей

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

каждый из target_id должны иметь разные значения но получается, что некоторые дубликаты. Я пробовал этот код

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

но он удаляет все условия, кроме первого. Это кажется странным из-за ключа target_id. Как я могу сделать эту работу?

ответ

0

Есть, вероятно, лучшие способы достижения этого, но вот решение.

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

Это позволит обрезать дубликаты для вас. но следует напомнить, что ключевая структура не будет сброшено, чтобы вы могли иметь ключи, идущие в порядке, как 0, 1, 6, 7, 10

Приветствия

EDIT: Интернет Пример: http://sandbox.onlinephpfunctions.com/code/9b4323a0b07ab8cd46b34a3715ea030f83e0b100