2016-07-20 33 views
0

我有两个表(类别和字段),其中一个字段可以被分配到多个类别这样PHP获取从foreach循环独特的阵列

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; 
     } 
} 

此输出将给我包括重复的值。我如何在这里删除重复项。请帮助 编辑: 例如$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; 
     } 
    } 
} 

但我想建议你一定要规范分贝。我认为这将是最好的解决方案。