Doppelte Einträge ausfiltern.

c3x

Grünschnabel
Hallo!

Ich möchte alle doppelten Einträge ausfiltern. Dafür gibt es ja die Funktion array_unique() - aber irgendwie bekomme ich das bei meinem Script nicht auf die Reihe.

Ich habe pro Datensatz ein Feld (tags), wo ich Suchbegriffe via Komma getrennt stehen habe. Diese Tags können natürlich innerhalb der Datenbank mehrfach vorkommen und sollen deswegen aussortiert werden.

Mein aktueller Code sieht so aus:

PHP:
foreach($result as $value) {
  $stags = explode(",", $value['tags']);
  foreach($stags as $var) { 
    echo "<li><a href='#' data-filter='." . $var . "'>" . $var . "</a></li>";
  }
}

Ich habe jetzt schon an mehreren Stellen versucht die array_unique() Funktion einzubauen, aber leider erfolglos.

Kann mir jemand einen Tipp geben?


Gruß
Torsten
 
Du musst erstmal ein array basteln, in dem die Suchbegriffe getrennt vorkommen. (Nicht direkt ausgeben! Sondern in einem array zwischenspeichern!) Darauf kannst du dann array_unique anwenden und es dann auch ausgeben lassen.
 
Ja, hatte ich - es ändert aber nichts. Ich bekomme immer die gleichen Tags angezeigt wie vorher auch.
 
Also

Datensatz1 | Titel1 | Tags = Tag1,Tag2,Tag3
Datensatz2 | Titel2 | Tags = Tag1,Tag4,Tag5
Datensatz3 | Titel3 | Tags = Tag1,Tag6,Tag7

jetzt lasse ich mir via foreach() alle Datensätze anzeigen. Innerhalb des foreach() ist ein weiteres foreach(), welches mir für jeden Datensatz die Tags via explode() rauszieht.

Diese Tags lasse ich mir nun in der Navigation anzeigen und hier habe ich dann

Tag1
Tag2
Tag3
Tag1
Tag4
Tag5
Tag1
Tag6
Tag7

Das Tag1 ist also 3x vorhanden.
 
Sowas?

PHP:
<?php

$result = array(
	'Tag1,Tag2,Tag3',
	'Tag2,Tag4,Tag6',
	'Tag7,Tag4,Tag8'
	);

$tags = call_user_func_array('array_merge', array_map(function($value) {
	return explode(',', $value);
}, $result));

$uniqueTags = array_unique($tags);

var_dump($uniqueTags);

edit// Ich bin nicht ganz sicher aber welcher php version das lauffähig ist, entweder 5.3 oder 5.4
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück