Hallo Forum,
dedlfix hatte mir den Hinweis gegeben dass das Löschen doppelter Einträge in einem Array per Callback-Funktion möglich sei. Da ich
bisher noch kaum bis garnicht mit Funktionen (selbstgeschriebenen) gearbeitet habe, sonder eher der Spaghetti-Code Programmierer bin =)
habe ich so meine Probleme mit der nachfolgenden Funktion:
Funktion um true bei doppelten Vorkommen zu returnen
function doppelte_filter($value, $reset = false){
static $cache = array();
if($reset){
$cache = array();
return;
}
if (in_array($value->id, $cache)){
return false;
$cache[] = $value->id;
return true;
}
}
Hier durchlaufe ich das Result Array aus der Datenbank und pushe b
if(doppelte_filter($result_array[$db_key])){
array_push($array_result, $result_array[$db_key]);
$counting++;
}
Und hier ein Auszug aus $result_array per print_r()
Array
(
[0] => stdClass Object
(
[date_german] => 15.03.06
[id] => 896
[news_nummer] => 773
[titel] => Wichtige Termin in 2006
[text] => Unter folgendem Link sind die Termine 2006...
[category_id] => 262
[category_name] => Termine
[path] =>
[sort] =>
)
[1] => stdClass Object
(
[date_german] => 07.02.05
[id] => 806
[news_nummer] => 702
[titel] => Anzeige von Angeboten aus 2004
[text] => Angebote, die Sie in 2004 im alten
[category_id] => 244
[category_name] => Aktuelle Nachrichten
[path] => StudentenBanking, Aktuelle Nachrichten
[sort] => 12
)
[2] => stdClass Object
(
[date_german] => 28.09.04
[id] => 782
[news_nummer] => 679
[titel] => Wir sind soweit
[text] => Dies ist ein Blindtext.
[category_id] => 226
[category_name] => Aktuelle Nachrichten
[path] => Aktuelles - de
[sort] => 7
)
}
Grundsätzlich möchte ich das doppelte Vorkommen einer [id] nachträglich vermeiden. Nach mehrfachen Versuchen dies über das
SQL Statement zu realisieren (UNION, DISTINCT, EXISTS) musste
ich feststellen, dass es nur über die Nachbearbeitung per PHP geht.
Was genau mache ich falsch?
Vielen Dank und viele Grüße
Tolwin