fastix®: Doppelt vorkommende Werte innerhalb einer Variable entfernen

Beitrag lesen

Moin!

<?php #ok. wir fangen an...
$strIDs=",31,43,32,31,31,";

Um das sinnvoll zu verarbeiten splitten wir das am Komma in einen Array:

$arIDs=explode(",",$strIDs);

die alte Textvariable können wir jetzt "vergessen", um Speicher zu sparen

unset($strIDs);

Wir legen schon mal einen leeren Array für das Ergebnis der Bemühungen an:

$arIDsBereinigt=array();

Wir haben jetzt einen Array und gehen den für jedes Element einmal durch:

for ($i=0; $i<(count($arIDs)); $i++) {
   # Wir schauen, ob das Element nicht etwa leer ist und hängen es, falls nicht, an einen neuen Array an:
   if ($arIDs[$i] != "") {
      array_push($arIDsBereinigt,$arIDs[$i]);
   }

# Jetzt gehen wir den Array vom Folgeelement bis zum Ende des Array durch:
   for ($k=$i+1; $k<count($arIDs); $k++) {
      #Wir untersuchen, ob $arIDs[$i]==$arIDs[$k] ist:
      if ($arIDs[$i]==$arIDs[$k]) {
         # Hm. Was könnten wir jetzt tun? Richtig!
         # Wir leeren das k-te Element aus dem Array, das kommt ja mindestens doppelt vor:
         $arIDs[$k]="";
      } # end if
   } # next $k
} next $i

jetzt können wir den alten Array "vergessen", um Speicher zu sparen

unset ($arIDs);

Unsere "neuen Werte" stehen in einem Array, den wir (zur Not) mit Implode wieder

zurückverwandeln können. Das folgende ist also ziemlich optional, ich denke auf

das Kommate am Beginn des Strings kannst Du verzichten

$strIDs=implode(",",$arIDsBereinigt);
unset($arIDsBereinigt)

Fertig Meister!

?>

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.