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


PHP Get unique array from foreach loop

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

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

您可以将所有提取的值存储在数组中,然后可以使用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);

您可以这样尝试:

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

但我建议你将数据库正常化。我认为这将是最好的解决方案。