phpbar.de logo

Mailinglisten-Archive

[php] arrays auf doppelte werte testen

[php] arrays auf doppelte werte testen

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Die Sep 28 11:18:36 CEST 2004


Hi Sebastian,

Sebastian Burg schrieb:
> ich hab das problem, ich habe ein array, nun will ich testen ob in diesem
> array nicht ein wert doppelt oder gar noch öfter vorkommt. Array_unique
> nützt mir nix, weil das würde ja nur bereinigen, ich muss nur testen.
> Hat jemand ne idee? Oder gar eine funktion die ich in der docu übersehen
> hab?

drei Wege sind mir gerade dazu eingefallen:


1. Du durchlaeufst den Array, nimmt jeden Wert und durchlaeufst in einer
Unterschleife den Array erneut und gleichst alle anderen Werte mit dem
Wert ab:

for ($i=0; $i<count($deinArray); $i++) {
  for ($k=0; $k<count($deinArray); $k++) {
    if ($k != $i && $deinArray[$k] == $deinArray[$i]) {
      echo('doppelt oder mehrfach: '.$deinArray[$k]);
    }
  }
}

(so in der Art, ungetestet)


2. Du durchlaeufst Den Array und guckst fuer jeden Wert mit array_keys()
und count(), wie oft er vorkommt:

for ($i=0; $i<count($deinArray); $i++) {
  $keys = array_keys($deinArray, $deinArray[$i]);
  if (count($keys()) > 1) {
      echo('Der Wert '.$deinArray[$i]. kommt '.count($keys()).'x vor!');
  }
}

(ebenfalls so in der Art, ungetestet)


3. Du sortierst den Array einmal nach Werten und durchlaeufst ihn
anschliessend. Dabei gleichst Du den aktuellen Wert mit dem davor ab. Sind
die beiden identisch, kommt der Wert mehr als einmal vor:

sort($deinArray);
// Schleife nicht bei 0, sondern erst bei 1 beginnen!
for ($i=1; $i<count($deinArray); $i++) {
  if ($deinArray[$i] == $deinArray[$i-1]) {
      echo('doppelt oder mehrfach: '.$deinArray[$k]);
  }
}

(noch einmal so in der Art, ungetestet)



Viele Gruesse

Lutz





php::bar PHP Wiki   -   Listenarchive