2016-07-20 5 views
0

У меня есть две таблицы (категории и поля), где одно поле может быть назначено несколько категорий, как этотPHP Получить уникальный массив из цикла Еогеасп

name  | category_ids 
color  | 1,2 
size  | 1,3 

Я пытаюсь получить поля, назначенные для заданных gategories, как это

foreach($category_ids as $category_id){ 
    $fields = $this->model->getFields($category_id); 
     foreach ($fields as $field) { 
     echo $field->name; 
     } 
} 

Этот выход даст мне значения, включая дубликаты. Как удалить дубликаты здесь. Пожалуйста, помогите EDIT: Например $category_ids являются 1,2, то выход я получаю color,color,size Но я хочу выходной быть как color,size

+2

нормализовать db –

+0

Что есть в '$ category_ids'? какой выход идет с вашим текущим кодом? каков ваш ожидаемый результат? вставьте туда, и вы получите решение. спасибо –

+0

Добавьте к вашему вопросу нужный результат из введенного вами примера ввода – BeetleJuice

ответ

1

Вы можете хранить все неправдоподобные значения в массиве, а затем вы можете использовать array_unique функцию удалите повторяющиеся значения.

$fieldsArray = []; 
foreach($category_ids as $category_id){ 
    $fields = $this->model->getFields($category_id); 
     foreach ($fields as $field) { 
      $fieldsArray[] = $field->name; 
     } 
} 
$fieldsArray = array_unique($fieldsArray); 
+0

Это именно то, что я искал. Благодаря! – Sanjeev

0

Вы можете попробовать так:

$existing = array(); 
foreach($category_ids as $category_id) { 

    $fields = $this->model->getFields($category_id); 
    foreach ($fields as $field) { 
     if (!in_array($field->name, $existing)) { 
      $existing[] = $field->name; 
      echo $field->name; 
     } 
    } 
} 

Но я хотел бы предложить вам нормализовать дб. Думаю, это будет лучшее решение.

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