Hallo Simon!
Gibt es bei PHP 3 die Möglichkeit, aus einem Array alle doppelten Werte zu entfernen? Beispielsweise soll aus einem Array (8,6,10,6,5,8) die doppelten Werte 8 und sechs herausgefiltert werden damit sowas entsteht (8,6,10,5).
tja, in PHP 4 gäbe es da ja array_unique() ...
In PHP sind alle Arrays Hashes, d.h. man kann beliebige Werte als Indices (=Schlüssel=$key) benutzen. Wieso also nicht die Feldwerte? Dadurch löschen sich die doppelten dann von alleine aus. (Der 'Hubert'ste-eintrag kann nur einmal existieren.)
Dannach werden die Indices (das waren zu Anfang die Inhalte) wieder in ein neues Feld als Wert eintragen, und dabei werden die Einträge dann wieder neu durchnummeriert.
Das funktioniert nur mit Strings und Zahlen (nicht mit Arrays und Objekten).
$deinFeld=array( ..... ); // <--- zu verwurstendes Feld
// hier werden die Werte($val) und Indices($key) vertauscht
// in ein neues Feld eingtragen:
$feld1=array();
function Eintragen1($val, $key)
{
global $feld1;
$feld1[$val]=$key;
}
array_walk($deinFeld,'Eintragen1');
// das enstandende Feld in ein neues von 0... durchnummeriertes
// Eintragen und aus den Indices wieder Inhalte machen
$ErgebnisFeld=array();
$index=0;
function Eintragen2($val,$key)
{
global $ErgebnisFeld, $index;
$ErgebnisFeld[$index++]=$key;
}
array_walk($feld1,'Eintragen2');
ungetestet, also nicht schlagen wenn ich irgendwo ein $ vergessen habe.
Gruss,
Carsten