2017-01-18 4 views
1

Ich versuche mit array_unique(); aber nicht funktioniert das ist mein Code bitte helfen Sie mir, was ich falsch mache? Ich möchte alle Tags ohne Duplikate anzeigen lassenSo entfernen Sie Duplikate php array_unique funktioniert nicht

ID | TAGS 
1 | rock, punk, jazz 
2 | pop, rock, classic 
3 | jazz, blues, rock 
4 | rock, rap, metal 

$wynik = mysql_query("SELECT * FROM nabk_t_item_tags") or die('Błąd zapytania'); 
if (mysql_num_rows($wynik) > 0) { 
    while ($r = mysql_fetch_assoc($wynik)) { 
     $input = $r['tags']; 
     $fields = explode(',', $input); 
     $fields2 = array_unique($fields); 
     foreach ($fields2 as $field) { 
      echo '"' . $field . '",'; 
     } 
    } 
} 
+5

Jedes Mal, wenn Sie [die 'mysql_'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) Datenbankerweiterung in neuen verwenden Code ** [ein Kätzchen wird irgendwo in der Welt erwürgt] (http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg) ** es ist veraltet und ist gewesen seit Jahren und ist für immer in PHP7 verschwunden. Wenn Sie nur PHP lernen, verbringen Sie Ihre Energie mit dem Lernen der Datenbankerweiterungen und vorbereiteten Anweisungen 'PDO' oder' mysqli'. [Beginnen Sie hier] (http://php.net/manual/en/book.pdo.php) – RiggsFolly

+3

Beginnen Sie, indem Sie uns ein Beispiel dessen zeigen, was in der Spalte "tags" enthalten ist. Dann beschreiben Sie, was mit Ihrem bestehenden Code falsch ist, der behoben werden muss – RiggsFolly

+0

Entschuldigung bitte erarbeiten, was erwarten Sie und was macht es? Sie möchten nur einen von jedem Wert erhalten? –

Antwort

0

Versuchen Sie diesen Code.

if (mysql_num_rows($wynik) > 0) { 
    $used=array(); 
    while ($r = mysql_fetch_assoc($wynik)) { 
     $input = $r['tags']; 
     $fields = explode(',', $input); 
     foreach($fields as $tg){ 
      if(!isset($used[$tg])){ 
       echo '"' . $tg . '",'; 
       $used[$tg]=" "; 
      } 
     } 
    } 
    unset($used); 
} 
+0

Diese Lösung funktioniert perfekt. Vielen Dank für die Hilfe! – Tomasz

+0

@Tomasz Ihre Begrüßung .. – Confused

1

Sie müssen alle Tags aus der Abfrage in einem einzigen Array setzen. Also, mit Ihrem vorhandenen Code:

// $fields2 = array_unique($fields); 
$fields2 = array_merge($fields2, $fields); 

Dann nach der while-Schleife, $fields2 alle Tags haben wird, und Sie können das Array array_unique. Fügen Sie diese Zeilen hinzu und sehen Sie sich das Ergebnis an:

} // end while 
    $unique_tags = array_unique($fields2); 
    var_dump($unique_tags); 
} // end if 
+0

Ihre Lösung ist gut - für jemanden, der mit PHP gearbeitet hat (offensichtlich hat er das nicht getan), deshalb kann er es nicht verstehen. Bearbeiten Sie Ihre Antwort mit einem vollständigen Arbeitscode und Kommentaren, und er könnte es bekommen. – besciualex

+0

@besciualex danke, bearbeitet, um es einfacher zu verstehen – imel96

Verwandte Themen