2016-07-20 9 views
0

Ich habe zwei Tabellen (Kategorie und Felder), wo ein Feld kann wie diesesPHP Erhalten Sie einzigartige Array von foreach-Schleife

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

mehreren Kategorien zugeordnet werden Ich versuche, Felder für gegebene gategories wie dieser zugewiesen bekommen

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

Dieser Ausgang gibt mir Werte einschließlich Duplikate. Wie kann ich hier Duplikate entfernen? Bitte helfen EDIT: Zum Beispiel $category_ids sind 1,2 dann ausgegeben ich immer bin color,color,size ist Aber ich möchte, ist die Ausgabe wie color,size

+2

normalisieren die db –

+0

Was gibt es in '$ category_ids'? Welche Ausgabe kommt mit Ihrem aktuellen Code? Was ist dein erwartetes Ergebnis? Paste dort und du wirst eine Lösung bekommen. danke –

+0

Fügen Sie Ihrer Frage die gewünschte Ausgabe von der Beispieleingabe hinzu, die Sie zeigten – BeetleJuice

Antwort

1

Sie alle abgerufenen Werte in Array speichern kann, und dann können Sie array_unique Funktion verwenden, um Entfernen Sie doppelte Werte.

$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

Genau das habe ich gesucht. Vielen Dank! – Sanjeev

0

Sie können wie folgt versuchen:

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

Aber ich möchte vorschlagen, dass Sie die Db zu normalisieren. Es wird die beste Lösung sein, denke ich.