# Gleiche Daten im Array zusammen fügen!?



## warli (31. Juli 2004)

Hi Folks,

wie kann ich in einem Array gleiche Daten zusammenfügen!?

Beispiel:

```
<?php
$array = array("PHP",1,"Manual",1,"ist",1,"cool");
foreach($array as $test){
echo $test;
}
?>
```

Die Ausgabe ist klar: _PHP1Manual1ist1cool_ 

Nun möchte ich aber das er die doppelten Daten erkennt und zusammen fast.
Das heisst das er die "1" nur einmal ausgibt egal wo sie im Array steht.

Beispielausgabe: _PHP1Manualistcool_

Hoffe was ich möchte ist verständlich 

Danke euch
gruss


----------



## KristophS (31. Juli 2004)

Mit ein paar If Abfragen solltest du es schon selbst hinbekommen.
Ich empfehle dir eine Funktion zu bauen ,in der du das Array eingibst.
Diese Funktion zaehlt die Eintraege im Array und  setzt die Doppelten = "" oder 'loescht' aus dem Array ,die doppelt sind.
Dafuer musst du jedes Array Element mit jedem anderen Vergleichen und danach aussortieren lassen.
Kannst natuerlich auch machen ,dass alle Eintraege die vorkommen in ein weiteres ARray zu speichen und dann mit if(in_array) abzufragen.

Srry wenn es e formuliert ist aber das Wetter macht mich malle.


----------



## JocalAreaNetwork (31. Juli 2004)

```
$array = array_unique($array);
```


----------



## warli (31. Juli 2004)

Danke leute.

Sei nicht sauer KristophS aber deine Lösung ist doch etwas zu viel Code  
Danke dir trotzdem.

Das mit

```
$array = array_unique($array);
```

klappt echt gut, ausser das die Daten ihren ArrayIndex beibehalten. Musste da dann doch noch etwas tricksen.

Also falls jemand den oben genannten Code verwendet, denkt dran:
*Array Index bleibt wie er vor der unique war. * 

Danke an euch
gruss aus dem heissen Niedersachsen *Fg*


----------



## Harrier (31. Juli 2004)

Hmmm! Ist aber wenn du foreach() verwendest doch egal welchen Index das Feld hat!


----------



## SilentWarrior (31. Juli 2004)

Genau. Und sonst machst du vor der foreach-Schleife noch eine foreach-Schleife, in der du jedes Element in einem neuen Array speicherst - dann stimmen die Indizes wieder.


----------



## _voodoo (31. Juli 2004)

*Idee*

```
$array = array("PHP",1,"Manual",1,"ist",1,"cool");
$new_array = Array();
while (list ($key, $val) = each($array)) if (!in_array($val, $new_array)) $new_array[$key] = $val;
```


----------



## JocalAreaNetwork (31. Juli 2004)

Kommt halt nur drauf an, ob's schnell sein muss, und das dürfte es ja nicht unbedingt sein, oder? :/

Also lieber überprüfen, ob der foreach-value nen leerer ist und dann mit continue weiter, würde ich mal sagen.


----------



## warli (3. August 2004)

Das mit der foreach Schleife geht ja nur wenn ich aus einer anderen Schleife das array angesprochen habe... ging das durch die Indexwerte nicht immer reibungslos.

Ich habe es zum Schluss dann doch so gemacht wie Silent Warrior (2 Schleifen)
und es klappt bestens.
Danke nochmal für eure vielen Ideen.

greetz
warli


----------

