PHP从foreach循环中获取唯一数组

时间:2016-07-20 05:49:11

标签: php foreach

我有两个表(类别和字段),其中一个字段可以分配给多个类别,如

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

我正在尝试为这样的给定分类分配字段

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 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;
        }
    }
}

但是我想建议您规范数据库。我认为它是最好的解决方案。